Android SQLite重命名fts3 rowid列
我正在使用一个教程来提供一个带有SimpleCorsorAdapter的AutoCompleteTextView。它的工作原理是完美的,但我已经将数据库改为使用fts3,因为我听说它更快(因此得名) 代码中的某些内容似乎硬连接到使用列Android SQLite重命名fts3 rowid列,android,sqlite,cursor,Android,Sqlite,Cursor,我正在使用一个教程来提供一个带有SimpleCorsorAdapter的AutoCompleteTextView。它的工作原理是完美的,但我已经将数据库改为使用fts3,因为我听说它更快(因此得名) 代码中的某些内容似乎硬连接到使用列\u id,因为在更改为fts3表后,我得到以下错误: 01-28 21:31:53.018: E/AndroidRuntime(16284): java.lang.IllegalArgumentException: column '_id' does not ex
\u 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
识别为\u id
,方法是使用SELECT rowid,*FROM mytable
,然后以某种方式更改列名。。我对sql非常陌生,因此非常感谢您的帮助 在SQLite中重命名列可以按如下所述进行。请注意,最好在事务中执行所有这些操作。在Android中执行此操作的一个细节-我不知道如何在解决方案中执行sql脚本,但请记住,如果使用execSQL调用
顺便说一句,如果您不想重命名该列,可以尝试建议的技术。在SQLite中重命名列可以按照所述操作。请注意,最好在事务中执行所有这些操作。在Android中执行此操作的一个细节-我不知道如何在解决方案中执行sql脚本,但请记住,如果使用execSQL调用
顺便说一句,如果您不想重命名该列,您可以尝试所建议的技巧。您的第二个建议(使用
作为
)很顺利。谢谢你的第二个建议(使用作为)很顺利。谢谢我有完全相同的问题我有完全相同的问题