beginTransaction():開始事務
endTransaction():結束事務
除此之外,SQLiteDatabase還提供瞭如下方法來判斷當前上下文是否處於事務環境中。
inTransaction():如果當前上下文處於事務中,則返回true;否則返回false。
當程序執行endTransaction()方法時將會結束事務——那到底是提交事務呢,還是回滾事務呢?這取決於SQLiteDatabase是否調用了setTransactionSuccessful()方法來設置事務標誌,如果程序事務執行中調用了該方法設置了事務成功則提交事務;否則程序將會回滾事務。
//開始事務
db.beginTransaction();
try
{
//執行DML語句
...
//調用該方法設置事務成功;否則endTransaction()方法將會回滾事務
db.setTransactionSuccessful();
}
finally
{
//由事務的標誌決定是提交事務還是回滾事務
db.endTransaction();
}