SQLiteOpenHelper.onUpgrade 的调用问题

比如说现在数据库版本是1,然后此时我修改代码定数据库版本为5。 那么系统在调用onUpgrade的时候是只调用一次(oldVersion == 1, newVersion == 5)还是从1到5调用5次?
如果是我的数据库从1到5各有一个版本,那么升级的时候会怎么调用?
我个人的想法是这个方法只调用一次,但是有个问题想不明白。就是如果只是调用一次的话,那么我写onUpgrade方法时岂不是得写4个分支:从1到5,从2到5,从3到5,从4到5。那要是版本更高的话,岂不是累死人。因此觉得系统会这样调用:从1到2,从2到3,从3到4,从4到5,以后再有6的话就从5到6。但这样的话,onUpgrade不会只调用一次。
请求大神解答。

阅读 3.7k
2 个回答

只会调用一次。不管是从1到2,还是1到5

你可以这样写

switch(oldVersion) {
    case 1:
    //do something
    case 2:
    //do something
    case 3:
    //do something
    case 4:
    //do something
    case 5:
    //do something
    break;
}

是只调用一次的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题