Android SQLiteOpenHelper.onUpgrade, как обрабатывать обновление схемы базы данных
У меня есть приложение в магазине Google Play, и я работаю над его новой версией. Будет изменена схема базы данных SQLite (новые таблицы) + новые ContentProviders.
Я рассматриваю, как правильно решить проблему обновления структуры базы данных, чтобы пользователи при обновлении моего приложения не теряли свой текущий контент, а также создавали новые таблицы.
Должен ли я изменить: * private static final int DATABASE_VERSION = 1; to:приватная статическая final int DATABASE_VERSION = 2;*
и как-то в методе onUpgrade() поместите код, который, если обнаружит, что oldVersion был 1, а newVersion равен 2. Создаст новые таблицы.
Теперь у меня есть какой-то тупой код, где, если onUpgrade был вызван, база данных была уничтожена и воссоздана... но я думаю, что этот метод никогда не вызывался, потому что DATABASE_VERSION не был изменен. И я просто удалить и переустановить приложение во время тестирования.
Какова лучшая практика?
private static final int DATABASE_VERSION = 1;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
enter code here
}
1 ответ
В настоящее время я использую следующее:
private static final int DATABASE_VERSION = 3;
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion < 2)
//changes added in DBv2
}
if(oldVersion < 3)
//changes added in DBv3
}
//so on...
}
Этот способ обеспечивает внесение изменений в базу данных один за другим в правильном порядке.