Android数据库rawQuery无法按预期工作

时间:2015-07-09 12:09:45

标签: android sql sqlite

这是我尝试运行的代码:

        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)。这里发生了什么?

2 个答案:

答案 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();