将光标打开会导致以后的命令失败吗?

时间:2013-04-12 17:51:02

标签: android sqlite android-sqlite

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

SELECT * FROM table_name WHERE id=42;

是否需要在运行如下命令之前关闭游标:

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

会影响打开Cursor中的行吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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();

注意:对所选表的更新不会影响已打开游标的(值)。