使用事务操作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);
posted on 2012-03-14 13:34 forrest001 阅读(2472) 评论(2) 编辑 收藏 举报