0

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

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

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

4

1 回答 1

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

}catch {

}finally {
        db.endTransaction();

}

公共无效 setTransactionSuccessful ()

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

于 2013-07-29T07:18:12.613 回答