我在更新特定行的列值时遇到了问题。我写过
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()做两件事
允许您测试查询是否返回空集
将光标移动到第一个结果
但上述两件事如何有助于更新?
答案 0 :(得分:0)
将rawQuery()
视为编译SQL但不运行它的C库sqlite3_prepare_v2()
的包装器,同时将moveTo..()
视为sqlite3_step()
的包装器是实际执行准备好的声明所必需的。