Почему индекс показывает -1? - PullRequest
0 голосов
/ 29 марта 2019

Я пытаюсь получить индекс из базы данных sqlite, я получил все данные, но только одно значение показывает -1 и сбой приложения

int weightColumnIndex = cursor.getColumnIndex(PetEntry.COLUMN_PET_WEIGHT);
Log.v("the weight index","-->"+weightColumnIndex);
int weight = cursor.getInt(weightColumnIndex);

это результат сообщения журнала

В / весовой индекс: -> - 1

и это ошибка в logcat

03-29 15: 24: 10.456 21309-21309 / com.example.android.pets E / CursorWindow: не удалось прочитать строку 0, столбец -1 из CursorWindow который имеет 1 строку, 5 столбцов.

1 Ответ

0 голосов
/ 29 марта 2019

Если эта строка:

int weightColumnIndex = cursor.getColumnIndex(PetEntry.COLUMN_PET_WEIGHT);

возвращает -1, тогда причиной может быть одна из следующих:

  • В своем запросе вы не выбрали столбец PetEntry.COLUMN_PET_WEIGHT, поэтому он не существует в результатах.

  • Ваша таблица не содержит столбец с именем PetEntry.COLUMN_PET_WEIGHT!
    Возможно, вы внесли изменения в схему таблицы после первого запуска приложения, например добавили или переименовали этот столбец в классе SQLiteOpenHelper, и вы думаете, что это изменение будет немедленно отражено в таблице, но это не так.
    Метод onCreate() вызывается не каждый раз, когда вы запускаете приложение.
    Он вызывается только тогда, когда база данных еще не существует (или вы можете вызвать ее напрямую, скажем, из метода onUpgrade() при изменении версии базы данных).
    Поэтому удалите приложение с устройства, на котором вы его тестировали, чтобы база данных была удалена и перезапущена.
    Таким образом, база данных будет воссоздана, и будет выполнен метод onCreate() для создания таблицы (таблиц) с самой последней схемой, определенной в классе SQLiteOpenHelper.

...