android - SQLite 重命名 fts3 rowid 列

标签 android sqlite cursor

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

相关文章:

java - 将数据传回 Android Studio 中的先前 Activity

android - Sqlite 数据库更新触发 Service 通过 Content Observer 更新

ios - 使用 FMDB 和 NSDictionary 向 SQLite 数据库添加 NULL 值

cursor - 禁用UITextField中闪烁的光标?

android - viewpager 中的 fragment 不显示何时在 recyclerview 中

android - 谷歌开发者电话

android - 如何在android中发出哔哔声?

.net - 更改 Dapper,以便将数据库空值映射到 double.NaN

sql-server - T-SQL 游标更新多个表中的多个列

android - 如何比较android中的时间值