1. 程式人生 > >Android開發中的SQLite事務處理,即beginTransaction()方法

Android開發中的SQLite事務處理,即beginTransaction()方法

使用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();

}