【发布时间】:2021-03-18 00:37:07
【问题描述】:
我正在尝试写入 android 上的 SQL 数据库。在数据库中创建项目可以正常工作,但我似乎无法返回并编辑它们。为了证明我已经硬编码了一个现有的项目 ID 并尝试更新它,但它仍然不起作用,这意味着我的代码可能有问题,或者我使用错误。告诉我我是否遗漏了什么。这是应该更新数据库的代码。默认情况下,COLUMN_STATE 得到一个“2”,我在这里用“3”替换它。但它在运行后只停留在 2。
public long markMessageRead(String messageId) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(Messages.COLUMN_STATE, "3");
// updating row
return db.update(Messages.TABLE_NAME, values, Messages.COLUMN_MESSAGE_ID + " = ?",
new String[]{String.valueOf(messageId)});
}
【问题讨论】:
-
如果您的
messageId方法arg 是String,则无需稍后再使用它的valueOf。但只要messageId真的有你认为的价值,它应该仍然有效。还假设您的常量确实具有它们应该具有的值,整个方法对我来说看起来是正确的。也就是说,如果此方法返回0并且没有错误,则错误的messageId似乎是最有可能的罪魁祸首,因为如果根本没有匹配WHERE子句,就会发生这种情况。这可能是人为错误,也可能是调用堆栈中某处的解析/类型转换问题。
标签: java android sqlite android-studio