- SQLite 數(shù)據(jù)庫是支持事務(wù)的。
- 事務(wù)的特性可以保證讓某一系列的操作要么全部完成,要么一個都不會完成。
- 比如銀行轉(zhuǎn)賬,對方?jīng)]收款成功,則付款方也不能扣款成功。
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction(); // 開啟事務(wù)
try {
db.delete("Book", null, null);
if (true) {
// 在這里手動拋出一個異常,讓事務(wù)失敗
throw new NullPointerException();
}
ContentValues values = new ContentValues();
values.put("name", "Game of Thrones");
values.put("author", "George Martin");
values.put("pages", 720);
values.put("price", 20.85);
db.insert("Book", null, values);
db.setTransactionSuccessful(); // 事務(wù)已經(jīng)執(zhí)行成功
} catch (Exception e) {
e.printStackTrace();
} finally {
db.endTransaction(); // 結(jié)束事務(wù)
}
1. 開啟事務(wù)
db.beginTransaction(); // 開啟事務(wù)
2. 操作完成后設(shè)置事務(wù)成功
db.setTransactionSuccessful();
3. 關(guān)閉事務(wù)
db.endTransaction();
- 這里在捕獲異常的代碼塊中操作,并手動拋出一個異常。
- 因?yàn)楫惓?,事?wù)沒有執(zhí)行成功,前面的刪除操作也不會成功。
- 去掉這個異常,刪除和添加操作都能成功。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。