Android數(shù)據(jù)庫事務(wù)淺析
在Android應(yīng)用程序開發(fā)中,經(jīng)常會遇到需要進(jìn)行數(shù)據(jù)庫操作的時候,有關(guān)數(shù)據(jù)庫事務(wù)處理對Android應(yīng)用程序的穩(wěn)定性和效率提升非常重要。
首先Android數(shù)據(jù)庫操作,特別是進(jìn)行寫操作的時候非常慢,將所有操作打包成一個事務(wù)能大大提高處理速度。
其次是保證數(shù)據(jù)的一致性,讓一個事務(wù)中的所有操作都成功執(zhí)行,或者失敗,或者所有操作回滾。
如果您喜歡使用其他平臺(如PHP + MySQL),代碼通常在一個功能強大的服務(wù)器上運行,一般不會被意外中止,但在Android平臺上,您將會因為一次又一次的意外中止感到驚呀。Android系統(tǒng)會殺死apps/threads/activities等中斷數(shù)據(jù)庫的使用,電池電量會耗盡或被移除等。所以,使用數(shù)據(jù)庫事物至關(guān)重要。
實現(xiàn)Android數(shù)據(jù)庫事務(wù)非常簡單,只需要使用SQLiteDatabase類的三個方法即可。
◆beginTransaction();
◆setTransactionSuccessful();
◆endTransaction();
當(dāng)調(diào)用endTransaction()時,所有從beginTransaction()開始的操作都會被提交。
一個簡單的數(shù)據(jù)庫事務(wù)操作如下所示:
- mDatabase.beginTransaction();
- try{
- //在這里執(zhí)行多個數(shù)據(jù)庫操作
- //執(zhí)行過程中可能會拋出異常
- mDatabase.setTransactionSuccessful();
- //在setTransactionSuccessful和endTransaction之間不進(jìn)行任何數(shù)據(jù)庫操作
- }catch(Exception e){
- //當(dāng)數(shù)據(jù)庫操作出現(xiàn)錯誤時,需要捕獲異常,結(jié)束事務(wù)
- mDatabase.endTransaction();
- throw e;
- }
- //當(dāng)所有操作執(zhí)行完成后結(jié)束一個事務(wù)
- mDatabase.endTransaction();
- }
以上是關(guān)于Android數(shù)據(jù)庫事務(wù)操作的一個簡單示例,在我們平時的Android開發(fā)中,將所有操作打包成一個事務(wù)為一個事務(wù)并保證事務(wù)的一致性,可以大幅提高Android數(shù)據(jù)庫操作的效率。
【編輯推薦】
- 多圖詳解 “Android UI”設(shè)計官方教程
- 在Eclipse下搭建Android開發(fā)環(huán)境教程
- Android開發(fā):系統(tǒng)自動實現(xiàn)開機啟動
- Android的UI設(shè)計與后臺線程交互





















