我有一个处理学校打印机的活动。打印机可以通过Internet下载,然后存储在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');");
...

接下来是大约500行类似的行。我也试着用单曲
db.rawQuerry("INSERT INTO destination (id, destination) VALUES(1,'BSAC240');
INSERT INTO destination (id, destination) VALUES(2,'BSAD152');.......");

但实际上只执行第一个insert语句。
有人知道提高效率的诀窍吗?或者Android数据库真的这么慢?
非常感谢你的帮助!
西蒙

最佳答案

如果你把它们放到交易中,效果会更好吗?

BEGIN TRANSACTION
  INSERT INTO destination (id, destination) VALUES(1,'BSAC240');
  INSERT INTO destination (id, destination) VALUES(2,'BSAD152');
END TRANSACTION

甚至(更新后的评论)
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();
}

07-24 20:54