2012-01-29 60 views
1

我正在使用教程here提供带有SimpleCursorAdapter的AutoCompleteTextView。它的工作原理一样,但我已经将数据库更改为使用fts3,因为我听说它更快(因此,名称)。SQLite重命名fts3 rowid列

好像什么东西在代码是硬连线使用的列_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然后以某种方式改变了列名..我很新为sql所以任何帮助表示赞赏!

+0

我有完全相同的问题 – 2015-04-22 17:03:47

回答

1

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

顺便说一句,如果你不想重命名列,你可以尝试建议的技术here

+0

你的第二个建议(使用'as')没有问题。谢谢! – Snailer 2012-01-29 22:04:46