为什么更新数据库表值

时间:2015-08-01 19:20:31

标签: android android-sqlite

我在更新特定行的列值时遇到了问题。我写过

Cursor c = mDb.rawQuery("UPDATE "+book+" SET footnotes='" + note + "' WHERE chapter="+chapter+" and verse="+verse+"", null);
c.close();

但是在添加c.moveToFirst()时它起作用了。那是为什么?

Cursor c = mDb.rawQuery("UPDATE "+book+" SET footnotes='" + note + "' WHERE chapter="+chapter+" and verse="+verse+"", null);
c.moveToFirst();
c.close();

为什么c.moveToFirst()在这里是必要的,有什么特别的原因吗?

c.moveToFirst()有一个解释 (What is The use of moveToFirst () in SQLite Cursors)简要建议使用c.moveToFirst()做两件事

  
    

允许您测试查询是否返回空集

         

将光标移动到第一个结果

  

但上述两件事如何有助于更新?

1 个答案:

答案 0 :(得分:0)

rawQuery()视为编译SQL但不运行它的C库sqlite3_prepare_v2()的包装器,同时将moveTo..()视为sqlite3_step()的包装器是实际执行准备好的声明所必需的。

相关:What is the correct way to do inserts/updates/deletes in Android SQLiteDatabase using a query string?