Android SQlite OnUpgrade问题

Rup*_*pin 6 sqlite android

我在Android Market中有一个名为SieveSMS的应用程序.它基本上可以让人们根据规则阻止传入的短信,就像outlook对电子邮件一样.

我更改了DB结构如下(在同一个表中)

1)数据库版本2

添加新列"未读"

2)DB版本3

添加新列"例外"

如果已经拥有该应用但尚未升级到版本2的用户现在看到该应用的第3版会发生什么?如何确保版本2中的更改也可供人们使用?

除此之外,如果安装了版本2并且他们尝试升级到版本3的人会发生什么情况.onUpgrade会给我一个"未读"列已经存在的错误吗?

您是否认为在基于当前版本的DB的onUpgrade方法中使用条件条件是明智的?

alo*_*pix 3

有很多关于Android开发的书籍对onUpgrade进行了解释。在那里,作者使用条件来检查新旧版本是什么。您的问题的解决方案非常简单:

if (oldVersion < 2) {
  db.execSQL(db, SQL_ADD_UNREAD);                                                                          
}
if (oldVersion < 3) {
  db.execSQL(db, SQL_ADD_EXCEPTION);                                                                        
}
Run Code Online (Sandbox Code Playgroud)

现在从 1 升级到 3 没有问题,2 升级到 3 也可以正常工作;)