这是我尝试运行的代码:
open();
database.beginTransaction();
Cursor cursor = database.rawQuery("UPDATE message SET is_read=1 WHERE id = 'user1' AND (mid IN ('msg1','msg2'))",null);
if (cursor != null) {
if (cursor.moveToFirst()) {
<... success ...>
}
cursor.close();
}
database.endTransaction();
close();
它不起作用 - 响应成功但我的光标没有更新的行。
针对同一数据库的相同查询在纯SQL中完全正常(我使用sqlitebrowser)。这里发生了什么?
答案 0 :(得分:2)
由于这是更新,因此建议您将rawQuery
的{{1}}更改。
此处详细介绍了彼此之间的区别:difference between rawquery and execSQL in android sqlite database
答案 1 :(得分:1)
试试这个,你需要在交易完成后设置交易成功。
Cursor cursor = database.rawQuery("UPDATE message SET is_read=1 WHERE id = 'user1' AND (mid IN ('msg1','msg2'))",null);
if (cursor != null) {
if (cursor.moveToFirst()) {
<... success ...>
}
cursor.close();
}
database.setTransactionSuccessful();
database.endTransaction();
close();