在安卓中数据库事务不起作用

4
我正在使用以下代码,但遇到了一些问题:
mDb.beginTransaction();
String updateQuery ="Query entered here"; 
String[] valVars = { Variables initialized here };
Cursor c = mDb.rawQuery(updateQuery, valVars);
if (c != null)
{
    mDb.setTransactionSuccessful();
    mDb.endTransaction();
    return true;
}
else
{ 
    mDb.endTransaction();
    return false;
}

当我使用debug而不是运行return true时,即使它位于else语句中,它也直接到达了return false。请告诉我问题在哪里,以及如何正确处理此问题。

1
我没有清楚地理解你在这里所说的内容,你能不能具体一些,至少让我明白一点。 - Lalit Poptani
我做的一切都对吗?其次,当我使用调试器时,它运行的是“return false”而不是“return true”。第三,一旦我运行了这段代码,我就看不到任何存储在我的数据库中的东西。 - Muhammad Umar
当您运行应用程序时,它返回true。当您调试应用程序时,它返回false。这就是您在此处指的情景吗?执行进入“else”块,因为当您进行调试时,游标c会变为NULL。请使用try-catch块查找在调用db事务相关方法时是否发生任何异常。 - Manjula
好的,我正在使用这段代码 Cursor c = mDb.rawQuery(updateQuery, valVars); mDb.setTransactionSuccessful(); }catch (Exception e){ mDb.endTransaction(); throw e; } mDb.endTransaction(); } 现在一切都正常工作,但是当我检查数据库时,它没有存储任何内容...有什么想法吗? - Muhammad Umar
1个回答

1
请使用如文档所述的结构:
db.beginTransaction();
try {
    ...
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接