事務(wù)是并發(fā)控制的基本單元
數(shù)據(jù)庫事務(wù)具有ACID特性:
A:Atomic原子性
數(shù)據(jù)庫事務(wù)是不可分割的工作單位稳衬,事務(wù)中的全部操作全部執(zhí)行或者全部不執(zhí)行C:Consistency一致性
數(shù)據(jù)庫事務(wù)不能破壞數(shù)據(jù)庫的完整性以及業(yè)務(wù)邏輯上的一致性或者說是事務(wù)執(zhí)行前后總的狀態(tài)是一致的I:Isolation隔離性
在并發(fā)環(huán)境中蝎土,當(dāng)不同的事務(wù)同時操作相同的數(shù)據(jù)時拆祈,每個事務(wù)都有各自的完整數(shù)據(jù)空間,事務(wù)不會查看到中間狀態(tài)的數(shù)據(jù)D:Durability持久性
事務(wù)成功結(jié)束藕甩,它對數(shù)據(jù)庫所做的更新就必須永久保存下來
事務(wù)執(zhí)行代碼:
SQLiteDatabase db = dbHelper.getReadableDatabase();
db.beginTransaction(); //開啟事務(wù)
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(); //事務(wù)已經(jīng)執(zhí)行成功
} catch (Exception e) {
e.printStackTrace();
}finally{
db.endTransaction(); //結(jié)束事務(wù)
}
首先調(diào)用SQLiteDatabase
的beginTransaction()
方法來開啟一個事務(wù)剩瓶,然后在一個異常捕獲的代碼塊中去執(zhí)行具體的數(shù)據(jù)庫操作锋叨,當(dāng)所有的操作完成之后菊匿,調(diào)用setTransactionSuccessful()
表示事務(wù)已經(jīng)執(zhí)行成功了付呕,最后在finally
代碼塊中調(diào)用endTransaction()
來結(jié)束事務(wù)