调用两次后,Android SQLite Update停止工作

时间:2013-06-22 22:58:04

标签: android sqlite

我在Android应用程序中更新SQLite数据库中的行时出现问题。它只能成功运行,如果我更新两次。但是当我第三次尝试这样做时,它不再更新同一行。

LogCat不会显示任何异常。 db.update()返回'1'

我在StackOverflow和网上搜索过类似的问题。人们建议]从db.close();中删除database-helper,因为我多次调用它,或者使用db.update方法而不是db.rawQuery()db.execSQL()

我还在SQLite客户端中测试了我的查询,它按预期工作。

以下是简单数据库辅助方法的代码:

public int updateEventDoneMark(Event event)
{
    ContentValues args = new ContentValues();
    args.put("completed", event.getCompleted());  
    return db.update("Event", args, "id" + "='" +event.getId() + "'", null);
}

在连续多次更新一个数据库条目时,是否存在一些与SQLite相关的问题?

1 个答案:

答案 0 :(得分:0)

您的内容提供商更新和URI匹配是什么样的?

典型内容提供程序为每一个表/视图都有一个URI,其中_id作为where_argument传递,而多行的URI使用where和where_arguments来选择要更新的行。

此外,它看起来像你更新ID。 Android确实想要名为“_id”的id列,虽然我认为目前不是你的问题,但它确实取决于它所使用的URI。内容提供程序通常使用_id进行编码,并根据_id选择列中的单行。这就是我想看内容提供商的原因。您也可以自己选择ID,这似乎不正常,虽然可以实现,但不是常态。通常where部分类似于'colunm name =?',下一个参数where_arguments是一个字符串数组,其中包含替换'?'的值。

希望这有帮助。