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...
}

Этот способ обеспечивает внесение изменений в базу данных один за другим в правильном порядке.

Другие вопросы по тегам