Android SQlite OnUpgrade问题

时间:2011-06-08 12:49:44

标签: android sqlite

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

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

1)数据库版本2

添加新列“未读”

2)DB版本3

添加新栏目“例外”

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

除此之外,如果安装了版本2且尝试升级到版本3的人会发生什么情况。onUpgrade是否会出现“未读”列已存在的错误?

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

1 个答案:

答案 0 :(得分:3)

有许多关于Android开发的书籍解释了onUpgrade。作者使用条件来检查新旧版本是什么。解决问题的方法非常简单:

if (oldVersion < 2) {
  db.execSQL(db, SQL_ADD_UNREAD);                                                                          
}
if (oldVersion < 3) {
  db.execSQL(db, SQL_ADD_EXCEPTION);                                                                        
}

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