0

我有一个带有 SQLite 数据库的应用程序;在打开游标以使用以下查询获取一些数据后:

SELECT * FROM table_name WHERE id=42;

在运行这样的命令之前是否有必要关闭光标:

UPDATE table_name SET column = datetime('now') WHERE id=42;

这会影响打开光标中的行吗?

4

2 回答 2

1

这应该很容易测试自己。
UPDATE语句将运行,但现有光标中的数据将过时。一般规则是在完成后关闭游标,如果使用现有游标Loader则应在源数据更改时刷新。

于 2013-04-12T17:55:29.137 回答
1

不,您可以打开游标,对选定的行执行一些更新,然后关闭游标(之前db.close())。样本:

Cursor cursor = db.rawQuery("SELECT id, ...");
if (cursor != null && cursor.moveToFirst()) {
    int id = cursor.getLong ("id");

    ContentValues values = new ContentValues();
    values.put("id", id +1000);
    values.put("name", name);

    db.update(DATABASE_TABLE, args, "id=" + id, null);
}
cursor.close();

注意:对选定表的更新对打开的游标(的值)没有影响。

于 2013-04-12T17:55:32.217 回答