Database Helper с моей идеей обновления:SQLiteOpenHelper # onUpgrade() - это новая версия, которая поддерживает новейшую версию?
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "myapp.db";
private static final int DATABASE_VERSION = 11;
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) { /* ... */ }
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch(oldVersion) {
case 1: upgradeToSecond(db);
case 2: upgradeToThird();
case 3: upgradeToFourth();
// ...
case 10: upgradeToEleventh();
}
}
private void upgradeToSecond(SQLiteDatabase db) { /* ... */ }
private void upgradeToThird(SQLiteDatabase db) { /* ... */ }
private void upgradeToFourth(SQLiteDatabase db) { /* ... */ }
// ...
private void upgradeToEleventh(SQLiteDatabase db) { /* ... */ }
}
Благодаря переключателю безbreak
с, схема базы данных будет обновляться шаг за шагом к последней версии, независимо от того, какой версии пользователя имел прежде. Если oldVersion
- 8
, будут выполнены методы обновления upgradeToNinth(db)
, upgradeToTenth(db)
и upgradeToEleventh(db)
. Большой!
Но этот код делает предположение, что значение newVersion
- это всегда самая новая версия базы данных (значение, предоставленное конструктору SQLiteOpenHelper
). Это правда? Существуют ли случаи, когда onUpgrade
метод вызван с newVersion
другим, что самый новый?