我没有为 sqlite 尝试过这个,但在 mssql 中做了类似的事情。大多数情况下,打开/关闭事务比插入花费更多时间。所以你可以在一笔交易中完成所有事情。值得一试。
db.beginTransaction();
try {
SQLiteStatement insert = null;
insert = db.compileStatement("INSERT OR REPLACE INTO \"MyTable\" ("
+ "\"MyColumnName\") VALUES (?)");
for (i = 0; i++; i < 10000)
{
insert.bindLong(1, i);
insert.execute();
insert.clearBindings();
}
db.setTransactionSuccessful();
}
catch (Exception e) {
String errMsg = (e.getMessage() == null) ? "bulkInsert failed" : e.getMessage();
Log.e("bulkInsert:", errMsg);
}
finally {
db.endTransaction();
}