SQLite переименовать столбец rowts fts3 - PullRequest
1 голос
/ 29 января 2012

Я использую учебное пособие здесь , чтобы предоставить 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)

Несмотря на то, что я нигде не объявил ключ автоинкремента (поскольку он заменен rowid в fts3). Ошибка возникает в AbstractCursor, поэтому я мало что могу с этим поделать.

Я думаю, что может быть способ заставить код распознавать rowid как _id, используя SELECT rowid,* FROM mytable, а затем как-то изменить имя столбца. Я довольно новичок в SQL, поэтому любая помощь оценили!

1 Ответ

1 голос
/ 29 января 2012

Переименование столбца в SQLite может быть сделано, как описано здесь .Обратите внимание, что настоятельно рекомендуется выполнять все эти операции в транзакции.Одна деталь, когда вы делаете это в Android - я не знаю, как вы выполняете сценарии sql в своем решении, но имейте в виду this , если вы используете вызовы execSQL.

Кстати, если вы предпочитаете не переименовывать столбец, вы можете попробовать предложенную технику здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...