如果我有3种不同的数据库模式,用户是否可以升级到版本2?换句话说,我是否需要在oldVersion
子类的newVersion
方法中检查onUpgrade()
和SQLiteOpenHelper
的每种可能组合?
澄清:
在我发布第3个数据库模式的更新之后,onUpgrade()
可能会被调用newVersion
为2(其中原始数据库模式为1,最新的模式为3)?
答案 0 :(得分:2)
他们可能会跳过某个版本,但这并不意味着您必须检查每个可能的组合。我通常做的是将升级放在他们独特的方法中,并从switch
:
private void updateTo1(){
//Code to update schema to version 1.
}
private void updateTo2(){
//Code to update schema to version 2.
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
switch(oldVersion){
case 0:
updateTo1();
case 1:
updateTo2();
}
}
这将确保即使他们从版本0直接升级到版本2,架构也将首先通过版本1,确保它与版本2更新兼容并准备好。