SQLite重命名fts3 rowid列

时间:2012-01-29 02:41:52

标签: android sqlite cursor

我正在使用教程here来提供带有SimpleCursorAdapter的AutoCompleteTextView。它完美地工作,因为,但我已经将数据库更改为使用fts3,因为我听说它更快(因此,名称)。

似乎代码中的某些内容很难使用列_id,因为在更改为fts3表后,我收到此错误:

01-28 21:31:53.018: E/AndroidRuntime(16284): java.lang.IllegalArgumentException: column '_id' does not exist
01-28 21:31:53.018: E/AndroidRuntime(16284): at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:314)

即使我没有在任何地方声明自动增量键(因为它在fts3中被rowid取代)。错误发生在AbstractCursor,所以我无能为力。

我认为可能有办法强制代码使用rowid_id识别为SELECT rowid,* FROM mytable然后以某种方式更改列名...我很新sql所以任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

在SQLite中重命名列可以按照here所述完成。请注意,强烈建议在事务中执行所有这些操作。在Android中执行此操作时的一个细节 - 我不知道如何在解决方案中执行sql脚本,但如果使用execSQL调用,请记住this

顺便说一下,如果您不想重命名该列,可以尝试使用提议的技术here