Android批量插入数据的方法
创建表 animal
String sqlCreateTable = "create table animal (id Integer primary key autoincrement, age Integer)";
1单条数据插入
SQLiteDataBase.insert(tableName, null, contentValues)
效率最低
/**
* 适用db.insert(taleName,null, contentValues) 批量插入数据
* @param paramListData
*/
public void insertBatchDataByinsert(List<Integer> paramListData) {
SQLiteDatabase db = localDbOpenHelper.getWritableDatabase();
db.beginTransaction();
for (Integer line: paramListData) {
ContentValues values = new ContentValues();
values.put("age", line);
db.insert(table, null, values);
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
2 批量插入数据
SQLiteData.execSQL(sql)
效率较高
/**
* db.execSQL(sql) 批量插入数据
*/
public void insertBatchDataByexecSQL(List<Integer> paramList) {
SQLiteDatabase db = localDbOpenHelper.getWritableDatabase();
db.beginTransaction();
for (Integer line: paramList) {
db.execSQL("insert into animal(age) values("+ line +")");
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
3 使用SQLiteStatement 批量插入
效率最快
/**
* 适用SQLiteStatement 批量插入数据
* @param paramList
*/
public void insertBatchDataByStatement(List<Integer> paramList) {
SQLiteDatabase db = localDbOpenHelper.getWritableDatabase();
String sql = "insert into animal(age) values(?)";
SQLiteStatement sstatement = db.compileStatement(sql);
db.beginTransaction();
for(Integer line : paramList) {
sstatement.bindLong(1, line);
sstatement.executeInsert();
}
db.setTransactionSuccessful();
db.endTransaction();
db.close();
}
插入一万条数据耗时