Я понимаю, что здесь есть много ответов для управления версиями SQLite, но я не смог найти ответ по моей конкретной проблеме. Я отлично справлялся с версией 1 довольно долго. Затем мне нужно было добавить еще один столбец «TAG» в мою таблицу и реализовать следующий код в onUpgrade.Android SQLite DB версии 2 error
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion < 2) db.execSQL(DATABASE_ALTER_TAG);
}
Он отлично поработал. Без вопросов. Столбец TAG работал как ожидается чтение и запись - пока я не переустановил после полной деинсталляции. БД теперь не будет работать с использованием кода, который работал до удаления/переустановки.
Я подозреваю, что после удаления/переустановки «старая версия» имеет значение null (это не < 2), а столбец TAG не добавляется. Хотя я не совсем уверен. Является ли мой код onUpgrade проблемой?
Я полагаю, что я мог бы переписать свою мою базу данных как Версию 1 со столбцом TAG, но я хотел бы знать, что не так с моим кодом для дальнейшего использования.
EDIT ВОПРОС
ОК, спасибо за ответы до сих пор. Я понимаю, как заставить БД работать для тех, кто устанавливает приложение снова. Я также понимаю, как заставить БД работать для кого-то, кто идет от Версии 1 к Версии 2. Я пока не понимаю, как заставить его работать для обоих пользователей (новая установка против того, кто только что обновляется).
Нет oldversion не может быть null, это примитивный тип данных. Ошибка в другом месте после журнала adb. –
Вы добавили новый столбец TAG в свой оператор DATABASE_CREATE? –
Я этого не делал. Мой «DATABASE_ALTER_TAG» добавляет столбец. Я смущен, почему мне нужно добавить его в onCreate и onUpgrade. – seekingStillness