【问题标题】:Android SQLite update row not workingAndroid SQLite 更新行不起作用
【发布时间】:2013-05-29 15:45:58
【问题描述】:

我正在尝试更新我的 SQLite 数据库中的一行。我的Database Helper类中的update row方法如下

public long updateNote(long rowId, String title, String body) {
    ContentValues args = new ContentValues();
    args.put(KEY_TITLE, title);
    args.put(KEY_BODY, body);

    return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" +  rowId,
            null);
}

并且该行是这样更新的:

     mDbHelper.open();
     mDbHelper.updateNote(mRowId, title, body);
     mDbHelper.close();

但是当我检索行时,数据与以前完全相同。我已经搜索过了,但我找不到任何答案。数据在游标中检索,如下所示:

public Cursor fetchAllNotes() {
    return mDb.query(DATABASE_TABLE,
            new String[] { KEY_ROWID, KEY_TITLE, KEY_BODY, "link", "type",
                    KEY_DATE, KEY_TIME, KEY_DAY, KEY_YEAR }, null, null,
            null, null, null);

}

【问题讨论】:

    标签: java android database sqlite android-sqlite


    【解决方案1】:

    尝试更改方法,例如:

    public long updateNote(long rowId, String title, String body) {
        ContentValues args = new ContentValues();
        args.put(KEY_TITLE, title);
        args.put(KEY_BODY, body);
    
        return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=?",
                new String[]{rowId+""});
    }
    

    希望这行得通。

    【讨论】:

    • 最好使用参数化查询,因为数据库可以优化它们以获得更好的性能,但它不会改变任何东西。
    • +1 它现在可以工作了(被困了好几天),但我不得不做“rowId = rowId +1;”在 ContentValues 语句之前。您应该编辑您的答案以包括其他人,谢谢:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    相关资源
    最近更新 更多