• 使用事务操作SQLite数据库和一些常用的SQL语句


    使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。使用例子如下: SQLiteDatabase db = ....;
    db.beginTransaction();//开始事务
    try {
        db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"传智播客", 4});
        db.execSQL("update person set name=? where personid=?", new Object[]{"传智", 1});
        db.setTransactionSuccessful();//调用此方法会在执行到endTransaction() 时提交当前事务,如果不调用此方法会回滚事务
    } finally {
        db.endTransaction();//由事务的标志决定是提交事务,还是回滚事务
    }
    db.close();
    上面两条SQL语句在同一个事务中执行。

    一些常见的SQL语句:

    CREATE TABLE person (_id integer primary key autoincrement, name varchar(20))
    SQLite可以解析大部分标准SQL语句,如:
    查询语句:select * from 表名 where 条件子句 group by 分组字句 having ... order by 排序子句
    如:select * from person
            select * from person order by id desc
            select name from person group by name having count(*)>1
    分页SQL与mysql类似,下面SQL语句获取5条记录,跳过前面3条记录
    select * from Account limit 5 offset 3 或者 select * from Account limit 3,5
    插入语句:insert into 表名(字段列表) values(值列表)。如: insert into person(name, age) values(‘传智’,3)
    更新语句:update 表名 set 字段名=值 where 条件子句。如:update person set name=‘传智‘ where id=10
    删除语句:delete from 表名 where 条件子句。如:delete from person  where id=10

    创建数据库表

    db.execSQL("CREATE TABLE person (_id integer primary key autoincrement, name varchar(20), amount integer)");//执行有更改的sql语句

    删除数据库

    db.execSQL("DROP TABLE IF EXISTS person");

    插入一条数据

    db.execSQL("insert into person (name,amount) values(?,?)", new Object[]{person.getName(),person.getAmount()});

    更新一条数据

    db.execSQL("update person set name=? where _id=?",  new Object[]{person.getName(),person.getId()});

    删除一条数据

    db.execSQL("delete from person where _id=?", new Object[]{id.toString()});

    查询一条数据

    Cursor cursor = db.rawQuery("select * from person where _id=?", new String[]{id.toString()});

    分页

    Cursor cursor = db.rawQuery("select * from person limit ?,?", new String[]{offset.toString(), maxResult.toString()});

    返回游标

    db.rawQuery("select _id as _id, name, amount from person limit ?,?",new String[]{offset.toString(), maxResult.toString()});

    得到总数

    db.rawQuery("select count(*) from person", null);

  • 相关阅读:
    Model2
    servlet_获取初始化参数
    Java_Reflect反射
    Java Web_过滤器
    JSP状态管理_1_Cookie
    JSP_内置对象_session
    Sql Server中的数据类型和Mysql中的数据类型的对应关系(转)
    组合权限查询 SQL,UniGUI
    BIM 3D 数据交换格式 ----张建平(清华女)
    即速应用_微信小程序开发 http://www.jisuapp.cn/
  • 原文地址:https://www.cnblogs.com/shaoyangjiang/p/2395796.html
Copyright © 2020-2023  润新知