2014-02-18 3 views
0

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 другим, что самый новый?

ответ

1

Но в этом коде предполагается, что значение newVersion всегда является самой новой версией базы данных (значение, предоставленное конструктору SQLiteOpenHelper). Это правда?

Да.

Это можно проверить, прочитав source где onUpgrade() вызывается с newVersion аргументом является то же вы прошли в качестве аргумента SQLiteOpenHelper конструктора.

0

Есть случаи, когда метод onUpgrade вызывается с newVersion другим, что самый новый?

onUpgrade выполняют только после того, как вы выпустили обновленную версию приложения и увеличили версию базы данных.

Смежные вопросы