Android開發中的SQLite事務處理,即beginTransaction()方法
阿新 • • 發佈:2018-11-12
使用SQLiteDatabase的beginTransaction()方法可以開啟一個事務,程式執行到endTransaction() 方法時會檢查事務的標誌是否為成功,如果程式執行到endTransaction()之前呼叫了setTransactionSuccessful() 方法設定事務的標誌為成功則提交事務,如果沒有呼叫setTransactionSuccessful() 方法則回滾事務。事務處理應用:很多時候我們需要批量的向Sqlite中插入大量資料時,單獨的使用新增方法導致應用響應緩慢, 因為sqlite插入資料的時候預設一條語句就是一個事務,有多少條資料就有多少次磁碟操作。如初始8000條記錄也就是要8000次讀寫磁碟操作。同時也是為了保證資料的一致性,避免出現數據缺失等情況。
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();
//開啟事務
db.beginTransaction();
try{
//批量處理操作
//do something
db.execSQL("SQL語句", new Object[]{});
db.execSQL("SQL語句", new Object[]{});
//設定事務標誌為成功,當結束事務時就會提交事務
db.setTransactionSuccessful();
catch(Exception e){
}
finally{
//結束事務
db.endTransaction();
}