使用SQLiteDatabase的beginTransaction()方法可以開(kāi)啟一個(gè)事務(wù),程序執(zhí)行到endTransaction() 方法時(shí)會(huì)檢查事務(wù)的標(biāo)志是否為成功,如果為成功則提交事務(wù),否則回滾事務(wù)。當(dāng)應(yīng)用需要提交事務(wù),必須在程序執(zhí)行到endTransaction()方法之前使用setTransactionSuccessful() 方法設(shè)置事務(wù)的標(biāo)志為成功,如果不調(diào)用setTransactionSuccessful() 方法,默認(rèn)會(huì)回滾事務(wù)。
使用例子如下:
1 SQLiteDatabase db =
.;
2 db.beginTransaction();//開(kāi)始事務(wù)
3 try {
4 db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"gaolei", 22});
5 db.execSQL("update person set name=? where personid=?", new Object[]{"zhangsan", 1});
6 db.setTransactionSuccessful();//調(diào)用此方法會(huì)在執(zhí)行到endTransaction() 時(shí)提交當(dāng)前事務(wù),如果不調(diào)用此方法會(huì)回滾事務(wù)
7 } finally {
8 db.endTransaction();//由事務(wù)的標(biāo)志決定是提交事務(wù),還是回滾事務(wù)
9 }
10 db.close();
上面兩條SQL語(yǔ)句在同一個(gè)事務(wù)中執(zhí)行。