我知道升级方法是如何工作的,我在某些方面感到困惑:
1)一开始我的数据库版本是1我的应用版本是1.
2)现在我将我的数据库版本升级到2,我的应用版本为2.
3)我想将DB升级到3,将app升级到3.
问题:从应用版本1升级到应用版本3的用户会发生什么?他们会将DB升级到2然后升级到3吗?或者我需要为此编写代码吗?我该如何保留这些旗帜?
答案 0 :(得分:2)
好吧,SQLiteOpenHelper.onUpgrade将像往常一样调用,最简单的处理方法是让升级代码逐步处理每个版本;从版本1 - > 2 - > 3等。例如:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion == 1) {
// upgrade db to version 2
oldVersion = 2;
}
if (oldVersion == 2) {
// upgrade db to version 3
oldVersion = 3;
}
}
答案 1 :(得分:0)
通常,当数据库升级是增量式时,您可以使用优雅的switch
:
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch( oldVersion ){
case 1:
migrateFrom1();
case 2:
migrateFrom2();
case 3:
migrateFrom3();
}
}
注意缺少break
陈述。