我必须执行一堆SQL行才能将一些数据放入我的表中。有很多行(大约15 MB的原始SQL指令),所以我尝试使用事务来提高数据库性能。那是我的代码:
SQLiteDatabase db;
...
db.beginTransaction();
...
//in cycle:
db.execSQL(row);
...
db.endTransaction();
db.close();
但是当我启动我的应用程序时,我可以在日志中看到SQL脚本正在执行,但是DB中没有数据。如果我只是删除db.beginTransaction();
和db.endTransaction();
- 一切正常。任何想法我如何处理交易?
答案 0 :(得分:1)
db.beginTransaction();
try {
//in cycle:
db.execSQL(row);
db.setTransactionSuccessful();
}catch {
}finally {
db.endTransaction();
}
public void setTransactionSuccessful()
在API级别1中添加将当前事务标记为成功。做 在调用它和调用之间不再做任何数据库工作 endTransaction。尽可能少地进行非数据库工作 情况也是。如果在此和之间遇到任何错误 endTransaction事务仍将被提交。