【问题标题】:SQLite database update doesn't updateSQLite 数据库更新不更新
【发布时间】: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


【解决方案1】:

更改内容值!

values.put(, "3");由你 描述 > 这可能是你的值 表。

例子:

 ContentValues values = new ContentValues();
 values.put("number", "3");
 db.update(Messages.TABLE_NAME, values, Messages.COLUMN_MESSAGE_ID + " = ?",
 new String[]{String.valueOf(messageId)});

另一种更新方式:

 String where = "id = 'your id'";
 db.update(table, values, where, null); //where can be null

它的工作方式相同,如果这对您没有帮助,请尝试使用 rawQuery 进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多