0

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

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

我在 StackOverflow 和网络上搜索过类似的问题。人们建议删除db.close();from database-helper,因为我多次调用它,或者使用db.update方法而不是db.rawQuery()or 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 相关的问题吗?

4

1 回答 1

0

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

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

而且看起来你是按 id 更新的。Android 真的想要名为“_id”的 id 列,虽然我认为目前不是你的问题,但这真的取决于它使用的 URI。Content Providers 通常使用 _id 编码,并根据 _id 按列选择单行。这就是为什么我想看到内容提供商。你自己也是通过id选择的,这似乎不正常,虽然可以完成,但不是常态。通常 where 部分类似于“列名 = ?”,下一个参数 where_arguments 是一个字符串数组,其中包含要替换“?”的值。

希望这可以帮助。

于 2013-07-31T00:40:28.620 回答