【问题标题】:Transactions in database not working in android数据库中的事务在android中不起作用
【发布时间】:2012-02-06 07:58:51
【问题描述】:

我正在使用以下代码,但遇到了一些问题:

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;
}

当我使用调试而不是运行return true 时,即使它在else 语句中,它也会直接达到return false。请告诉我是什么问题以及如何正确执行此操作。

【问题讨论】:

  • 我没有清楚明白你在这里想说什么,你能不能对我说得更具体一点。
  • 好吧,我做得对吗?其次,当我使用调试器而不是执行 return true 时,它​​运行 return false。第三,运行此代码后,我看不到数据库中存储的任何内容。
  • "运行应用时返回true。调试应用时返回false。"是不是你说的场景?执行转到“else”块,因为在调试时,Cursor c 变为 NULL。调用 db 事务相关方法之一时,使用 try catch 块查找是否发生任何异常。
  • 好的,我正在使用此代码 Cursor c = mDb.rawQuery(updateQuery, valVars); mDb.setTransactionSuccessful(); }catch (Exception e){ mDb.endTransaction();扔 e; } mDb.endTransaction();现在一切工作正常但是当我检查数据库时它没有存储任何东西......有什么想法吗?

标签: java android eclipse sqlite


【解决方案1】:

使用这种结构,如documentation 中所述:

db.beginTransaction();
try {
    ...
    db.setTransactionSuccessful();
} finally {
    db.endTransaction();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-10
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2011-12-30
    • 2018-04-14
    • 1970-01-01
    相关资源
    最近更新 更多