我正在使用教程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,然后以某种方式更改列名称。

最佳答案

可以按照here所述在SQLite中重命名列。请注意,在交易中执行所有这些操作是非常明智的。在Android中执行此操作时的一个细节-我不知道如何在解决方案中执行sql脚本,但是如果您使用execSQL调用,请记住this

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

关于android - SQLite重命名fts3 rowid列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9050476/

10-09 13:00