android中在sqlite插入資料的時候預設一條語句就是乙個事務,因此如果存在上萬條資料插入的話,那就需要執行上萬次插入操作,操作速度可想而知。因此在android中插入資料時,使用批量插入的方式可以大大提高插入速度。
有時需要把一些資料內建到應用中,常用的有以下2種方式:其一直接拷貝製作好的sqlite資料庫檔案,其二是使用系統提供的
資料庫,然後把資料批量插入。我更傾向於使用第二種方式:使用系統建立的資料庫,然後批量插入資料。批量插入資料也有很多方法,那麼那種方法更快呢,下面通過乙個demo比較一下各個方法的插入速度。
1、使用db.execsql(sql)
這裡是把要插入的資料拼接成可執行的sql語句,然後呼叫db.execsql(sql)方法執行插入。
public void inertorupdatedatebatch(listsqls)
// 設定事務標誌為成功,當結束事務時就會提交事務
db.settransactionsuccessful();
} catch (exception e) finally
}
2、使用db.insert("table_name", null, contentvalues)
這裡是把要插入的資料封裝到contentvalues類中,然後呼叫db.insert()方法執行插入。
db.begintransaction(); // 手動設定開始事務
for (contentvalues v : list)
db.settransactionsuccessful(); // 設定事務處理成功,不設定會自動回滾不提交
db.endtransaction(); // 處理完成
db.close()
3、使用inserthelper類
這個類在api 17中已經被廢棄了
inserthelper ih = new inserthelper(db, "bus_line_station");
db.begintransaction();
final int directcolumnindex = ih.getcolumnindex("direct");
final int linenamecolumnindex = ih.getcolumnindex("line_name");
final int snocolumnindex = ih.getcolumnindex("sno");
final int stationnamecolumnindex = ih.getcolumnindex("station_name");
try
db.settransactionsuccessful();
} finally
4、使用sqlitestatement
檢視inserthelper時,官方文件提示改類已經廢棄,請使用sqlitestatement
string sql = "insert into bus_line_station(direct,line_name,sno,station_name) values(?,?,?,?)";
sqlitestatement stat = db.compilestatement(sql);
db.begintransaction();
for (station line : buslines)
db.settransactionsuccessful();
db.endtransaction();
db.close();
下圖是以上4中方法在批量插入1萬條資料消耗的時間
可以發現第三種方法需要的時間最短,鑑於該類已經在api17中廢棄,所以第四種方法應該是最優的方法。
Android批量插入資料到SQLite資料庫
在開發android應用時,有時需要把一些資料內建到應用中,常用的有以下2種方式 其一直接拷貝製作好的sqlite資料庫檔案,其二是使用系統提供的資料庫,然後把資料批量插入。我更傾向於使用第二種方式 使用系統建立的資料庫,然後批量插入資料。批量插入資料也有很多方法,那麼那種方法更快呢,下面通過乙個d...
Android 批量插入資料到SQLite資料庫
android中在sqlite插入資料的時候預設一條語句就是乙個事務,因此如果存在上萬條資料插入的話,那就需要執行上萬次插入操作,操作速度可想而知。因此在android中插入資料時,使用批量插入的方式可以大大提高插入速度。有時需要把一些資料內建到應用中,常用的有以下2種方式 其一直接拷貝製作好的sq...
Android批量插入資料到SQLite資料庫
android中在sqlite插入資料的時候預設一條語句就是乙個事務,因此如果存在上萬條資料插入的話,那就需要執行上萬次插入操作,操作速度可想而知。因此在android中插入資料時,使用批量插入的方式可以大大提高插入速度。有時需要把一些資料內建到應用中,常用的有以下2種方式 其一直接拷貝製作好的sq...