SQLiteDatabase事务不会添加数据

时间:2013-07-29 07:15:52

标签: android android-sqlite sqlite

我必须执行一堆SQL行才能将一些数据放入我的表中。有很多行(大约15 MB的原始SQL指令),所以我尝试使用事务来提高数据库性能。那是我的代码:

SQLiteDatabase db;
...
db.beginTransaction();
...
//in cycle:
db.execSQL(row);
...
db.endTransaction();
db.close();

但是当我启动我的应用程序时,我可以在日志中看到SQL脚本正在执行,但是DB中没有数据。如果我只是删除db.beginTransaction();db.endTransaction(); - 一切正常。任何想法我如何处理交易?

1 个答案:

答案 0 :(得分:1)

db.beginTransaction();
try {
    //in cycle:
    db.execSQL(row);
    db.setTransactionSuccessful();

}catch {

}finally {
        db.endTransaction();

}
  

public void setTransactionSuccessful()

     

在API级别1中添加将当前事务标记为成功。做   在调用它和调用之间不再做任何数据库工作   endTransaction。尽可能少地进行非数据库工作   情况也是。如果在此和之间遇到任何错误   endTransaction事务仍将被提交。