我在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相关的问题?
答案 0 :(得分:0)
您的内容提供商更新和URI匹配是什么样的?
典型内容提供程序为每一个表/视图都有一个URI,其中_id作为where_argument传递,而多行的URI使用where和where_arguments来选择要更新的行。
此外,它看起来像你更新ID。 Android确实想要名为“_id”的id列,虽然我认为目前不是你的问题,但它确实取决于它所使用的URI。内容提供程序通常使用_id进行编码,并根据_id选择列中的单行。这就是我想看内容提供商的原因。您也可以自己选择ID,这似乎不正常,虽然可以实现,但不是常态。通常where部分类似于'colunm name =?',下一个参数where_arguments是一个字符串数组,其中包含替换'?'的值。
希望这有帮助。