使用Android进行高效的SQLite插入

Sim*_*sch 8 sqlite performance android

我有一个处理我大学打印机的活动.打印机可以通过互联网下载,然后存储在SQLite数据库中.问题是,有大约500个数据库条目必须存储它们,这与我的代码非常耗时(在Google Nexus S上大约30秒).我的代码是这样的:

printerDB = new PrinterListOpenHelper(this);
SQLiteDatabase db = printerDB.getWritableDatabase();
db.execSQL("INSERT INTO destination (id, destination) VALUES(1,'BSAC240');");
db.execSQL("INSERT INTO destination (id, destination) VALUES(2,'BSAD152');");
...
Run Code Online (Sandbox Code Playgroud)

接下来是约.500个相似的行.我也尝试用一个单独做

db.rawQuerry("INSERT INTO destination (id, destination) VALUES(1,'BSAC240');
INSERT INTO destination (id, destination) VALUES(2,'BSAD152');.......");
Run Code Online (Sandbox Code Playgroud)

但实际上只执行了第一个INSERT语句.

是否有人知道如何提高效率?或Android数据库真的那么慢?

非常感谢你的帮助!西蒙

vic*_*irk 17

如果将它们放入交易中,它会更好吗?

BEGIN TRANSACTION
  INSERT INTO destination (id, destination) VALUES(1,'BSAC240');
  INSERT INTO destination (id, destination) VALUES(2,'BSAD152');
END TRANSACTION
Run Code Online (Sandbox Code Playgroud)

甚至(更新以下评论)

db.beginTransaction()
try {
    db.execSQL("INSERT INTO destination (id, destination) VALUES(1,'BSAC240');");
    db.execSQL("INSERT INTO destination (id, destination) VALUES(2,'BSAD152');");
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}
Run Code Online (Sandbox Code Playgroud)

  • 惊人!这为我节省了很多时间.(~30秒到2/3秒)谢谢;) (3认同)