比如说,我最近版本升级了5次,每次都调整了表结构,也就是说,每次升级的时候,我的表结构做了响应调整,但是这样的话,如果有人夸版本升级的时候,导致部分表结构没办法更新,导致程序运行报错,请问有什么好的办法哦?
你在逗我么?....你当然是判断它是从哪个版本升级到你现在的版本,然后就去升级它的表结构.
可以一次性升级到现在的表结构,就是你自己整理出表结构变化sql.每个越级的你都要整理出来一个.然后根据越级的状况来执行某一个.
另一种方法是,从原版本到现在的版本,依次执行表结构变化的sql.最终不就得到了现在要的表结构了吗?
回复 @loyal:码农何苦为难码农。。。其实我觉得最简单的办法是,以最新的表结构为准,之前的版本的表结构,缺啥字段补啥字段,多了字段删除,这样不就完美解决了?我是不理解什么是“夸版本升级”才进来的你代码里怎么处理的?
SQLiteOpenHelper
里面应该有
publicvoidonUpgrade(SQLiteDatabasedb, intoldVersion, intnewVersion){
这个东西的啊?
然后你根据老版本号,switchcase,不要加break,他就会根据用户当前版本号,一个一个升级脚本跑上来了。不会出问题的啊
比如
switch(old){
case1:
//sql1;
case2:
//sql2;
}
只要你的case是按照版本号递增的写出来的,就不会有问题的啊 他跳版本,从1跳到10,那么就case1-case10都执行,等于升级10次
SQLiteOpenHelper
里面应该有
publicvoidonUpgrade(SQLiteDatabasedb, intoldVersion, intnewVersion){
这个东西的啊?
然后你根据老版本号,switchcase,不要加break,他就会根据用户当前版本号,一个一个升级脚本跑上来了。不会出问题的啊
比如
switch(old){
case1:
//sql1;
case2:
//sql2;
}
只要你的case是按照版本号递增的写出来的,就不会有问题的啊 他跳版本,从1跳到10,那么就case1-case10都执行,等于升级10次
那就是你自己程序没有调试好其中一个版本根本就是错误的问题没有出现在你最新的这个版本上而是你曾经的问题根本就没有结局SQLiteOpenHelper
里面应该有
publicvoidonUpgrade(SQLiteDatabasedb, intoldVersion, intnewVersion){
这个东西的啊?
然后你根据老版本号,switchcase,不要加break,他就会根据用户当前版本号,一个一个升级脚本跑上来了。不会出问题的啊
比如
switch(old){
case1:
//sql1;
case2:
//sql2;
}
只要你的case是按照版本号递增的写出来的,就不会有问题的啊 他跳版本,从1跳到10,那么就case1-case10都执行,等于升级10次
嗯,同样遇到了这个问题,覆盖安装后直接fc。我的办法是当两个版本中有冲突时,将数据库表中数据直接删除并要求用户重新登录。希望有更好的办法版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。