我有一个有SQLite数据库的应用程序,它位于Play商店,最近我发布了一些更新,其中包括向数据库中的表添加列
我现在想做另一个版本,它再次将一个列添加到表中,但是我遇到的问题是我不知道是否所有人都下载了更新
如果每个人都没有升级,如果我删除对数据库的旧更改,他们将无法获取它们并且应用程序将崩溃
如果我留下更新并且已安装更新的人尝试更新,则会说该列已存在,然后不会执行实际需要的更新,应用程序将崩溃
我猜测最好的办法是在数据库中的每个修改版上进行try / catch,这样如果一个失败,它仍会转到下一个
但是我想知道是否有一种实际的'正确'方式来处理这个问题
谢谢
答案 0 :(得分:2)
在onUpgrade
中,您拥有旧和新应用程序版本。在这里,您需要决定如何升级。
例如,3版本,v2有额外的列,v3也有额外的列
示例:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
int upgradeTo = oldVersion + 1;
while (upgradeTo <= newVersion) {
switch (upgradeTo) {
case 1:
// Add columns
break;
case 2:
// Add more columns
break;
}
upgradeTo++;
}
}