国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

詳解Android SQLite 事務處理的解決方法

2020-02-21 17:25:01
字體:
來源:轉載
供稿:網友

Android應用程序在初始化的時候,都需要大量數據批量插入SQLite中運行,下面武林技術頻道小編為大家慢慢介紹Android SQLite 事務處理的解決方法吧!

解決方法:

添加事務處理,把5000條插入作為一個事務


我們使用SQLite的事務進行控制:

?

??????? db.beginTransaction();? //手動設置開始事務

?

??????? try{

??????????? //批量處理操作

??????????? for(Collection c:colls){

??????????????? insert(db, c);

??????????? }

??????????? db.setTransactionSuccessful(); //設置事務處理成功,不設置會自動回滾不提交。

//在setTransactionSuccessful和endTransaction之間不進行任何數據庫操作

?????????? }catch(Exception e){

?????????????? MyLog.printStackTraceString(e);

?????????? }finally{

?????????????? db.endTransaction(); //處理完成

?????????? }

?


一、使用SQLiteDatabase的beginTransaction()方法可以開啟一個事務,程序執行到endTransaction() 方法時會檢查事務的標志是否為成功,如果程序執行到endTransaction()之前調用了setTransactionSuccessful() 方法設置事務的標志為成功,則所有從beginTransaction()開始的操作都會被提交,如果沒有調用setTransactionSuccessful() 方法則回滾事務。

?

二、使用例子如下:下面兩條SQL語句在同一個事務中執行。

Java代碼

?

//銀行賬戶事務測試?
public void payment()?
{?
??? SQLiteDatabase db = dbOpenHelper.getWritableDatabase();?
??? //開啟事務?
??? db.beginTransaction();?
??? try?
??? {?
??????? db.execSQL("update person set amount=amount-10 where personid=?", new Object[]{1});?
??????? db.execSQL("update person set amount=amount+10 where personid=?", new Object[]{2});?
??????? //設置事務標志為成功,當結束事務時就會提交事務?
??????? db.setTransactionSuccessful();?
??? }?
?? catch(Exception e){
??????? throw(e);
??? }
??? finally?
??? {?
??????? //結束事務?
??????? db.endTransaction();?
??? }?
}

相信大家看了詳解Android SQLite 事務處理的解決方法,都多多少少了解到了吧,有時候項目的需求和程序的完美結合,才能夠讓項目達到完美的效果。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤山县| 元阳县| 远安县| 高淳县| 昌平区| 商丘市| 文安县| 望城县| 临洮县| 丽江市| 仲巴县| 北辰区| 忻城县| 密山市| 图木舒克市| 墨竹工卡县| 稷山县| 德江县| 阳朔县| 宁安市| 肇州县| 宿迁市| 班戈县| 临西县| 兰溪市| 平塘县| 安西县| 隆尧县| 手游| 乐东| 通城县| 仙居县| 新晃| 诸城市| 时尚| 霞浦县| 林口县| 尚义县| 定西市| 安乡县| 长丰县|