在開發過程中解析xml中的數據有上萬條之多,發現在想sqlite中插入的時候非常耗時,原因是沒有使用事務,默認是每插入一次使用一次事務,這樣如果插入1w條數據,就要開啟1w次事務,非常耗時,所以我們可以通過手動開啟和關閉的方式控制事務。
在自己的繼承了SQLiteOpenHelper的子類中加入插入:
/**
* databasename 是表名
* valuesArr 是要插入的數據
*/
public void insertAll(String databaseName,
ArrayList valuesArr) {
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
for (ContentValues val : valuesArr) {
db.insert(databaseName, null, val);
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
通過這種開啟事務的方式,插入數據的時間將得到顯著的提高。(時間會隨著設備的性能好壞有所差異)。
更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11