Android 当应用程序版本号更改时处理数据库更改

Android 当应用程序版本号更改时处理数据库更改,android,android-database,Android,Android Database,我正试图找出处理数据库升级和版本控制的最佳方法 目前,当我发布一个point release时,我会删除数据库并注销用户,这不是一个很好的体验 有人能推荐一些技巧吗?您的数据库版本独立于应用程序版本。如果您的数据库模式根本没有改变,那么在更新期间您不需要对数据库做任何事情 当数据库架构发生更改时,您应该在SQLiteOpenHelper中处理数据库更新。当您尝试访问数据库并更新了数据库版本时,将调用此方法,如中所述 如果您使用第三方库来处理数据库,它应该为您处理升级或提供类似的功能 这里没有升级

我正试图找出处理数据库升级和版本控制的最佳方法

目前,当我发布一个point release时,我会删除数据库并注销用户,这不是一个很好的体验


有人能推荐一些技巧吗?

您的数据库版本独立于应用程序版本。如果您的数据库模式根本没有改变,那么在更新期间您不需要对数据库做任何事情

当数据库架构发生更改时,您应该在
SQLiteOpenHelper
中处理数据库更新。当您尝试访问数据库并更新了数据库版本时,将调用此方法,如中所述

如果您使用第三方库来处理数据库,它应该为您处理升级或提供类似的功能


这里没有升级数据库的通用策略。您所做的完全取决于您的模式在升级之前的样子以及新模式的样子。根据更改的内容,您可以创建新表或列、删除表或列、更新数据库中的行或在表之间移动数据。如果您有关于如何迁移数据的特定问题,请创建一个描述新模式和旧模式的新问题。

我们这样做的方式是,每次应用程序启动时,我们都运行一个例程,调用服务器上的存储过程,以获取SQL,在必要时升级数据库。(sql可能非常复杂:删除表并使用新结构重新创建它们,然后插入新值)。我们将数据库的版本存储在数据库本身中,并升级到新版本

我们不使用onUpgrade()调用