Ошибка Android в неиспользуемой колонке - PullRequest
0 голосов
/ 21 марта 2012

Я создаю приложение, которое создает базу данных SQLite и взаимодействует с ней.

Однако каждый раз, когда приложение устанавливает соединение с базой данных, оно закрывается из-за ошибок.

(на мой взгляд) соответствующие ошибки:

03-21 07:50:29.308: E/AndroidRuntime(554): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dummies.android.taskreminder/com.dummies.android.taskreminder.ReminderListActivity}: java.lang.IllegalArgumentException: column '_id' does not exist

03-21 07:50:29.308: E/AndroidRuntime(554): Caused by: java.lang.IllegalArgumentException: column '_id' does not exist

В учебном пособии, которое я использовал, столбец ID назывался «_id», но я переименовал его в «ReminderID», прежде чем использовать его. Термин «_id» никогда не используется в моей версии, и переименование переменной «ReminderID» в «_id» приводит к тем же ошибкам.

Ответы [ 3 ]

1 голос
/ 21 марта 2012

_id - это соглашение для Android, оно требуется для cursorAdapter, например.

0 голосов
/ 21 марта 2012

_id столбец не для вашей таблицы, вы можете добавить этот столбец или другой удалить в _id ключ в вашем запросе

0 голосов
/ 21 марта 2012

В вашей базе данных не обязательно должен быть столбец с именем _id, но SimpleCursorAdaptor должен иметь возвращаемый столбец.Вы можете сделать это с псевдонимом.Поле _id используется в качестве уникального ключа, чтобы гарантировать, что данные, которые обрабатываются курсором, могут корректно обрабатываться адаптерами, представлениями адаптеров и т. д., если

ReminderID,XYZ ABC are your columns... then

Для запроса вашего SimpleCursorAdapter вы можете сделать это с помощью базы данных rawQuery...

 SELECT  ReminderID as _id,XYZ,ABC FROM MY_TABLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...