標籤:android style blog http color io ar for strong
原文路徑:http://blog.csdn.net/w250shini11/article/details/8649289
最近有個客戶反映,需要匯入十幾萬的資料到sqlite,結果耗時很長,並且很容易崩潰。網上搜了下解決辦法,看到了以下這個覺著靠譜的想法,但手上還沒有相應的大量資料進行測試,先將方法保留下來。
在Android開發中,需要向sqlite中匯入大量資料,按照一般做法是很耗時的,測試了一下,匯入一條資料在100ms左右,按照這樣的做法,如果匯入1萬條資料,大約得花17分鐘,經過實際測試,確實花了17分鐘左右。
解決耗時的辦法是利用sqlite的事務來處理。方法如下:
首先擷取database對象,然後執行如下方法:
db.beginTransaction(); //手動設定開始事務
//資料插入操作迴圈
//update insert delete select可以迴圈嵌套操作
db.setTransactionSuccessful(); //設定交易處理成功,不設定會自動復原不提交
db.endTransaction(); //處理完成
測試了一下,如果匯入1萬條資料,大約耗時20秒左右。效能比之前提升了一大截。比如
public int insert(Uri uri, ContentValues[] values) {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
db.beginTransaction();
try {
int numValues = values.length;
for (int i = 0; i < numValues; i++) {
db.insertOrThrow(tablename, null, values);
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
return values.length;
}
android事務操作