显然这个问题之前已被问过,但是尽管看了几个回答,我仍然有点不确定。 onUpgrade()方法的docs也没有真正帮助。
onUpgrade()是否针对每个版本增量运行(即,从db_v1到db_v3 onUpgrade()运行一次为1> 2,然后再运行为2> 3),或者它只运行一次(即,从db_v1到db_v3 onUpgrade()运行一次为1> 3);
我的假设是它只被调用一次。在这种情况下,这样的工作会好吗?
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 0:
migrateDatabaseToVersion_1(db);
migrateDatabaseToVersion_2(db);
migrateDatabaseToVersion_3(db);
break;
case 1:
migrateDatabaseToVersion_2(db);
migrateDatabaseToVersion_3(db);
break;
case 2:
migrateDatabaseToVersion_3(db);
break;
default:
Log.d(LOG, "no database migrations necessary");
break;
}
}
我看到了一个响应here,它提出了类似的建议,但是使用if语句而不是switch。任何帮助深表感谢。提前谢谢。
答案 0 :(得分:0)
documentation没有明确说明这一点,但如果为每个增量调用它,那么将旧版本号和新版本号都作为参数是没有意义的。
注意:最好使用一系列if
语句而不是switch
:只要旧版本小于第n步的版本,就升级该步骤。
这不仅可以避免重复,还可以防止您忘记break
...