Android SQLite - «не может получить доступ к столбцу 3» и т. Д. - PullRequest
0 голосов
/ 15 марта 2012

Я создаю новую базу данных SQLite в Android с помощью этого метода:

public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE events (_id INTEGER PRIMARY KEY AUTOINCREMENT, chosenSpot TEXT, chosenTime TEXT, chosenDate TEXT, chosenGroup TEXT);");

}

Короче говоря, он имеет 5 столбцов, один для идентификатора, остальные для выбранной {Spot / Time / Date / Group}

Чтобы получить место с указанным курсором c, мне удалось с помощью c.getString (1).

Но это не работает для c.getString (2..4), и я не знаю, как дальше отлаживать это, как проверить размер моей БД и т. Д. Я проверил количество столбцов с помощью c.getColumnCount () возвращает 2, когда должно быть 5!

Что с этим?

= редактировать = мой бревенчатый кот: enter image description here

Ответы [ 3 ]

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

Возможно, вам придется удалить старую таблицу, а затем создать новую.

    db.execSQL("DROP TABLE events");
    db.execSQL("CREATE TABLE events (_id INTEGER PRIMARY KEY AUTOINCREMENT, chosenSpot TEXT, chosenTime TEXT, chosenDate TEXT, chosenGroup TEXT);");

Закомментировать команда удаления при следующем запуске, когда у вас уже есть новая таблица.

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

Прежде всего проверьте, правильно ли создается База данных.Я предлагаю вам извлечь файл db из вашего эмулятора, а затем просмотреть его с помощью некоторого средства просмотра данных sqlite.Для этого в Firefox есть очень хороший плагин.

Если вы уверены, что с базой данных все в порядке, мы можем перейти к следующему фрагменту проблемы с курсором.

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

Вы должны использовать cursor.getColumnIndex ("_ id") для получения идентификаторов столбцов.

cursor.getString( cursor.getColumnIndex("_id") );

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