我正在使用教程 here为 AutoCompleteTextView 提供一个 SimpleCursorAdapter。它按原样完美运行,但我已将数据库更改为使用 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
中,因此我对此无能为力。
我在想可能有一种方法可以通过使用 SELECT rowid,* FROM mytable
强制代码将 rowid
识别为 _id
然后以某种方式更改列名。我对 sql 还很陌生,所以非常感谢您的帮助!
最佳答案
重命名 SQLite 中的列可以按照描述的方式完成 here .请注意,强烈建议在事务中执行所有这些操作。在 Android 中执行此操作时的一个细节 - 我不知道您如何在解决方案中执行 sql 脚本,但请记住 this如果您使用 execSQL 调用。
顺便说一下,如果您不想重命名该列,您可以尝试建议的技术 here .
关于android - SQLite 重命名 fts3 rowid 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050476/