標籤:
Android中在sqlite插入資料的時候預設一條語句就是一個事務,因此如果存在上萬條資料插入的話,那就需要執行上萬次插入操作,操作速度可想而知。因此在Android中插入資料時,使用批量插入的方式可以大大提高插入速度。 有時需要把一些資料內建到應用中,常用的有以下2種方式:其一直接拷貝製作好的SQLite資料庫檔案,其二是使用系統提供的
資料庫,然後把資料批量插入。我更傾向於使用第二種方式:使用系統建立的資料庫,然後批量插入資料。批量插入資料也有很多方法,那麼那種方法更快呢,下面通過一個demo比較一下各個方法的插入速度。
1、使用db.execSQL(sql) 這裡是把要插入的資料拼接成可執行檔sql語句,然後調用db.execSQL(sql)方法執行插入。
public void inertOrUpdateDateBatch(List<String> sqls) { SQLiteDatabase db = getWritableDatabase(); db.beginTransaction();try { for (String sql : sqls) { db.execSQL(sql);} // 設定事務標誌為成功,當結束事務時就會提交事務 db.setTransactionSuccessful();} catch (Exception e) { e.printStackTrace();} finally {// 結束事務 db.endTransaction(); db.close(); }}
2、使用db.insert("table_name", null, contentValues)
這裡是把要插入的資料封裝到ContentValues類中,然後調用db.insert()方法執行插入。
db.beginTransaction(); // 手動設定開始事務for (ContentValues v : list) { db.insert("bus_line_station", null, v);} db.setTransactionSuccessful(); // 設定交易處理成功,不設定會自動復原不提交 db.endTransaction(); // 處理完成 db.close();
Android 批量插入資料到SQLite資料庫