Android SQLiteOpenHelper#onUpgrade()-新版本总是最新版本吗?
数据库助手与我的升级想法:Android SQLiteOpenHelper#onUpgrade()-新版本总是最新版本吗?,android,android-sqlite,sqliteopenhelper,Android,Android Sqlite,Sqliteopenhelper,数据库助手与我的升级想法: 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_
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) { /* ... */ }
}
由于开关没有中断
s,数据库模式将逐步更新到最新版本,无论用户以前有什么版本。如果旧版本
为8
,则将运行升级方法upgradetonith(db)
、upgradetonith(db)
和upgradeToEleventh(db)
。太好了
但是这段代码假设newVersion
的值始终是数据库的最新版本(提供给SQLiteOpenHelper
构造函数的值)。这是真的吗?是否存在使用newVersion
调用onUpgrade
方法而调用最新版本的情况
是否存在使用最新版本以外的新版本调用onUpgrade方法的情况
onUpgrade
仅在发布应用程序的更新版本并增加数据库版本后执行
但是这段代码假设newVersion的值始终是数据库的最新版本(提供给SQLiteOpenHelper构造函数的值)。这是真的吗
对
这可以通过阅读whereonUpgrade()
调用,其中newVersion
参数与您传入的SQLiteOpenHelper
构造函数参数相同来验证