[转载]使用事务操作SQLite数据库和一些常用的SQL语句

[转载]使用事务操作SQLite数据库和一些常用的SQL语句 – forrest001 – 博客园.

使用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);

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏