SQLite 支持事务操作 。简单的操作流程代码如下:
public void onClick(View v) {
<span style="white-space:pre"> </span>SQLiteDatabase db = dbHelper.getWritableDatabase();
db.beginTransaction();
try {
db.delete("Book", null, null);
// if (true) {
// 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();
} catch (Exception e) {
e.printStackTrace();
} finally {
db.endTransaction();
}
}
其中,beginTransaction开启事务,调用setRransactionSuccessful()表示事务执行成功,最后endTransaction.
注意,若注释的代码执行,则整个事务失败,由于事务的一致性,删除动作也是失败的。