SQLite数据库是支持事务的,事务的特性可以保证让一系列的操作要么全部完成,要么全部不完成。举一个简单地例子—–转账,银行会先从你账户中扣除一定的金额,然后再在对方账户中加入相应的金额。这两个步骤要么都成功,要么都不成功,这便是事务的使用场合 。
下面先放上代码
//开启事务
db.beginTransaction();
try{
db.delete("Book", null, null);
if (true) {
//在此处手动抛出一个异常,让事务失败
throw new NullPointerException();
}
ContentValues contentValues = new ContentValues();
contentValues.put("name", "book1");
contentValues.put("author", "author1");
contentValues.put("pages", 720);
contentValues.put("price", 20.85);
//执行插入数据
db.insert("Book", null, contentValues);
//事务已经执行成功
db.setTransactionSuccessful();
}catch (Exception e){
e.printStackTrace();
}finally {
//结束事务
db.endTransaction();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
Android中事务的使用步骤
1 . 调用beginTransaction()方法开启事务。
2 . 在一个捕获异常的代码块中写有关数据库的操作。上面的例子中是自己手动抛出一个空指针异常。真实的例子中可以是抛出具体合适的异常。
3 . 当所有操作都成功执行后,使用setTransactionSuccessful()方法表示事务执行成功。
4 . 在finally代码块中结束事务
上面的代码示例中,由于一定会抛出一个空指针异常,这样添加数据的代码就执行不了了,由于是事务,两个操作没有同时执行成功,所以前面的删除操作也不会执行成功。