在我的应用程序中升级SQLite数据库架构

时间:2014-04-12 00:33:30

标签: android database sqlite

如果我有3种不同的数据库模式,用户是否可以升级到版本2?换句话说,我是否需要在oldVersion子类的newVersion方法中检查onUpgrade()SQLiteOpenHelper的每种可能组合?

澄清:

在我发布第3个数据库模式的更新之后,onUpgrade()可能会被调用newVersion为2(其中原始数据库模式为1,最新的模式为3)?

1 个答案:

答案 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更新兼容并准备好。