如何更新android中有光标的条目?

如何更新android中有光标的条目?,android,Android,我有以下返回单个元素(最多)的查询: 我可能需要更新数据库中的这个特定条目。以下是我尝试的: ContentValues changedValues = new ContentValues(); changedValues.put(KEY_PRICE, changedPrice); db.update( DATABASE_TABLE_SERIES, changedValues, "KEY_BOOK = ? ORDERBY "+ KEYDATE +" ASC LIMIT

我有以下返回单个元素(最多)的查询:

我可能需要更新数据库中的这个特定条目。以下是我尝试的:

ContentValues changedValues = new ContentValues();
changedValues.put(KEY_PRICE, changedPrice);
db.update(
    DATABASE_TABLE_SERIES, 
    changedValues, 
    "KEY_BOOK = ? ORDERBY "+ KEYDATE +" ASC LIMIT 1",
    new String[]{String.valueOf(bookId)}
);
这不起作用(如我所料)

如何使用查询结果更新查询的确切条目?我非常喜欢一些示例代码,因为我可能不理解文本形式的解释(我是android初学者)

替换:

"KEY_BOOK = ? ORDERBY "+ KEYDATE +" ASC LIMIT 1",
与:


上没有
ORDER BY
子句或
LIMIT
子句。

要更新此单个条目,必须创建唯一标识符。唯一标识符是每个表中的
id
。因此,必须首先
选择该唯一标识符,然后很容易找到剩余的标识符。下面是示例代码:

Cursor cursor = db.query(
        DATABASE_TABLE_SERIES,
        new String[]{'id'},
        KEY_BOOK + " = ?",
        new String[]{String.valueOf(bookId)},
        null,
        null,
        KEY_DATE+" ASC",
        "1"
);
cursor.moveToFirst();

ContentValues changedValues = new ContentValues();
changedValues.put(KEY_PRICE, changedPrice);
db.update(
    DATABASE_TABLE_SERIES, 
    changedValues, 
    "id = ?",
    new String[]{cursor.getString(0)}
);

当然,如果合适的话,可以修改第一个请求,一次查询
price
id

删除
Update()
函数中的
OrderBy…
。它不属于那里。这并不能回答我的问题…好吧,你还需要在一个事务中(并提交它),以便更改为“坚持”。这是您的问题吗?我想更新我在select语句中选择的单个、特定的、唯一的、显式的一个数据库行条目。WHERE语句需要尽可能具体(是否有唯一的键?),以便它只影响一行。但是我有多个可能的条目?我有数百个条目与查询“KEY\u BOOK=3”匹配。它们都在更新吗?这不是我想要的…@Alex:“但是我有多个可能的条目?”——然后用一些唯一的标识符替换
KEY\u BOOK
和值。我们不知道您的数据库模式;我假设
KEY\u BOOK
实际上是一个主键。
"KEY_BOOK = ?",
Cursor cursor = db.query(
        DATABASE_TABLE_SERIES,
        new String[]{'id'},
        KEY_BOOK + " = ?",
        new String[]{String.valueOf(bookId)},
        null,
        null,
        KEY_DATE+" ASC",
        "1"
);
cursor.moveToFirst();

ContentValues changedValues = new ContentValues();
changedValues.put(KEY_PRICE, changedPrice);
db.update(
    DATABASE_TABLE_SERIES, 
    changedValues, 
    "id = ?",
    new String[]{cursor.getString(0)}
);