Android 批量插入數據到SQLite數據庫


   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();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM