我正在使用教程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/