如何优雅地处理更高版本的数据库升级?

时间:2011-09-13 13:19:07

标签: java android

所以我的应用程序几乎准备好了。我一直想知道何时更新数据库的升级将如何运作。

基本上这是一个测验,我将添加和删除问题,例如需要保存用户的个人数据。有多少正确和错误的答案以及哪些问题等。

如果您认为我可能想要删除或添加新问题,这会变得更复杂一些,甚至在更改结构时更糟糕。

但我现在要担心这段代码吗?我想我的应用程序的第二个版本可能包含更新代码。这将允许我提前发布初始应用程序并担心后台升级。

这可能吗?或者您必须拥有待机的升级代码吗?

2 个答案:

答案 0 :(得分:3)

您现在应该使用SQLiteOpenHelper,以后可以担心onUpgrade() - 代码。

如果增加数据库的版本号,则执行该方法。您可以在那里处理/管理您的更新。


初始版本号传递给constructor

您还可以使用SQLiteDatabase - 对象(传递给onUpgrade() - 方法)的相应方法来获取/设置它:setVersion()getVersion()

答案 1 :(得分:1)

基本上SQLiteOpenHelper.onUpgrade()的目的是让程序员在更改数据库的版本号时对数据库进行更改。在大多数情况下,它可能与数据库/表格方案/结构的变化有关。然而,如果您将处理SQLiteOpenHelper.onUpgrade()数据库内容更改,则没有错。

在我的情况下,我选择了另一种方法,因为DB内容立即被用户更改,我有资源XML文件(kinda templates.xml),其中包含有关可用主数据的基本信息(如在您的案例测验中)和期间首先打开数据库我只是将主数据上传到数据库。所以你可以做同样的事情