android 数据库的版本,android-具有4个数据库版本的SQLite onUpgrade

当我们有4个数据库版本并且在每个版本的用户表中添加了一个新字段时,如何正确执行SQLiteOpenHelper的onUpgrade方法?

变体A://在每种情况下都没有“中断”,它是否在情况2和3中继续运行?

public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) {

switch (version_old) {

case 1:

database.execSQL(addPostcodeFieldToUserTable);

case 2:

database.execSQL(addGenderFieldToUserTable);

case 3:

database.execSQL(addEmailSubscriptionFieldToUserTable);

break;

}

}

变体B:

public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) {

switch (version_old) {

case 1:

database.execSQL(addPostcodeFieldToUserTable);

break;

case 2:

database.execSQL(addPostcodeFieldToUserTable);

database.execSQL(addGenderFieldToUserTable);

break;

case 3:

database.execSQL(addPostcodeFieldToUserTable);

database.execSQL(addGenderFieldToUserTable);

database.execSQL(addEmailSubscriptionFieldToUserTable);

break;

}

但是,如果用户拥有数据库的版本1,然后错过了版本2,并使用版本3升级了应用程序,我们该怎么办?

变体3:

public void onUpgrade(SQLiteDatabase database, int version_old, int current_version) {

if(version_old==1 && current_version==2) {

database.execSQL(addPostcodeFieldToUserTable);

} else if(version_old==2 && current_version==3) {

database.execSQL(addGenderFieldToUserTable);

} else if(version_old==3 && current_version==4) {

database.execSQL(addEmailSubscriptionFieldToUserTable);

} else if(version_old==1 && current_version==3) {

database.execSQL(addPostcodeFieldToUserTable);

database.execSQL(addGenderFieldToUserTable);

} else if(version_old==1 && current_version==4) {

database.execSQL(addPostcodeFieldToUserTable);

database.execSQL(addGenderFieldToUserTable);

database.execSQL(addEmailSubscriptionFieldToUserTable);

} else if(version_old==2 && current_version==4) {

database.execSQL(addGenderFieldToUserTable);

database.execSQL(addEmailSubscriptionFieldToUserTable);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值