0

在过去的 5-6 个小时里,我一直坚持这一点。没有任何工作。我想获取与用户输入的查询相对应的密钥,以便用户可以修改与该特定 ID 对应的数据。

这段代码有问题吗..??

db.execSQL("CREATE VIRTUAL TABLE " + DATABASE_TABLE
                + " USING fts3 (" + KEY_ID
                + " INTEGER PRIMARY KEY ASC, " + KEY_NAME
                + " TEXT NOT NULL, " + KEY_ADDRESS
                + " TEXT NOT NULL, " + KEY_CONTACT + " TEXT NOT NULL, "
                + KEY_BALANCE + " DOUBLE);");

我将这个 KEY_ID 列清空。我想获取这个 id(使用 cursor 元素,就像我们使用 cursor.getString(int) 一样)让用户修改与所选 id 对应的值,所以我需要从某个地方获取 id。有没有办法调用 fts3 表的默认 ID 而不是使用别名?

4

1 回答 1

0

有没有办法调用 fts3 表的默认 ID 而不是使用别名?

问题是适配器中使用的游标必须有一个带有 name 的整数主键列_id,但_id不是 SQLite 识别的别名。所以不,您需要使用自己的别名。您可以使用docid as _id,rowid as _id等。


添加
由于我不相信您可以在语句中以任何方式更改docid INTEGER PRIMARY KEY列,因此CREATE VIRTUAL TABLE您需要在SELECT语句中应用别名,例如:

SELECT docid as _id, bar FROM Foo WHERE bar MATCH 'John';
于 2013-01-15T18:08:04.307 回答