事务是并发控制的基本单元
数据库事务具有ACID特性:
A:Atomic原子性
数据库事务是不可分割的工作单位,事务中的全部操作全部执行或者全部不执行C:Consistency一致性
数据库事务不能破坏数据库的完整性以及业务逻辑上的一致性或者说是事务执行前后总的状态是一致的I:Isolation隔离性
在并发环境中,当不同的事务同时操作相同的数据时,每个事务都有各自的完整数据空间,事务不会查看到中间状态的数据D:Durability持久性
事务成功结束,它对数据库所做的更新就必须永久保存下来
事务执行代码:
SQLiteDatabase db = dbHelper.getReadableDatabase();
db.beginTransaction(); //开启事务
try {
db.delete("Book", null, null);
ContentValues values = new ContentValues();
values.put("name", "sheng");
values.put("author", "xiao");
values.put("pages", 123);
values.put("price", 20.5);
db.insert("Book", null, values);
db.setTransactionSuccessful(); //事务已经执行成功
} catch (Exception e) {
e.printStackTrace();
}finally{
db.endTransaction(); //结束事务
}
首先调用SQLiteDatabase
的beginTransaction()
方法来开启一个事务,然后在一个异常捕获的代码块中去执行具体的数据库操作,当所有的操作完成之后,调用setTransactionSuccessful()
表示事务已经执行成功了,最后在finally
代码块中调用endTransaction()
来结束事务