在dbHelper
:
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
function我将一个表保存到外部数据库。
因此我
这一直有效,直到函数返回到getWritableDatabase()
这里我得到了这个例外:
java.lang.IllegalStateException: no transaction pending
有什么问题?谢谢 塔塔
答案 0 :(得分:3)
问题是onUpgrade
方法(以及onCreate
)在事务中发生,并且最后设置事务成功并结束它。
但是,您已在onUpgrade
中结束了该交易,从而导致此错误。
来自SQLiteOpenHelper
的相关代码:
...
if (version != mNewVersion) {
db.beginTransaction();
try {
if (version == 0) {
onCreate(db);
} else {
onUpgrade(db, version, mNewVersion);
}
db.setVersion(mNewVersion);
db.setTransactionSuccessful();
} finally {
db.endTransaction();
}
}
...
答案 1 :(得分:2)
我猜你可能在SQLiteDatabase.endTransaction()
中调用onUpgrade
而没有先调用SQLiteDatabase.beginTransaction()
。虽然在没有看到任何代码的情况下有点难以辨别;)