Chinaunix首页 | 论坛 | 博客
  • 博客访问: 875416
  • 博文数量: 366
  • 博客积分: 10267
  • 博客等级: 上将
  • 技术积分: 4290
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:04
文章分类

全部博文(366)

文章存档

2012年(366)

分类: 系统运维

2012-03-14 16:57:28

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

阅读(1400) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~