ActiveAndroid:升级数据库版本

ActiveAndroid:升级数据库版本,android,orm,activeandroid,Android,Orm,Activeandroid,我有以下情况: 我的应用程序与数据库版本4一起发布给客户 我做了一些错误修复并添加了更多的功能。这个过程也改变了我的模型,这就是为什么数据库也改变了 如何检查客户在其设备上安装的数据库版本,并将旧数据迁移到新数据库?ActiveAndroid库中是否有onUpgrade方法或类似的方法?如果您通过SQLiteOpenHelper访问数据库并执行适当的数据库版本控制,则可以使用它的onUpgrade方法运行一些代码来更新数据库。否则,您应该执行自定义解决方案。我建议您创建一个扩展SQLiteOpe

我有以下情况: 我的应用程序与数据库版本4一起发布给客户

我做了一些错误修复并添加了更多的功能。这个过程也改变了我的模型,这就是为什么数据库也改变了


如何检查客户在其设备上安装的数据库版本,并将旧数据迁移到新数据库?ActiveAndroid库中是否有onUpgrade方法或类似的方法?

如果您通过SQLiteOpenHelper访问数据库并执行适当的数据库版本控制,则可以使用它的onUpgrade方法运行一些代码来更新数据库。否则,您应该执行自定义解决方案。

我建议您创建一个扩展
SQLiteOpenHelper
的类。当通过此类打开数据库时,它将在必要时自动调用
onUpgrade()
方法。此方法的参数包括数据库模式的新版本号和旧版本号。

深入研究ActiveAndroid的源代码后,我找到了一个解决方案。 ActiveAndroid可以使用位于资产文件夹中的sql脚本从一个版本迁移到另一个版本

它使用自然排序算法对位于资产/迁移/中的所有sql文件进行排序:


找到的每个SQL脚本都将在其>旧版本和时执行,只要您的架构发生更改,您就需要通过配置或
AA_DB_version
元数据增加数据库版本号。如果添加了新类,ActiveAndroid将自动将它们添加到数据库中。但是,如果要更改现有表中的某些内容(例如,添加或删除列),可以使用名为
.sql
的sql脚本来完成,其中NewVersion是
资产/迁移中的
AA_DB_版本

如果脚本文件名大于旧数据库版本,小于或等于新版本,ActiveAndroid将执行该脚本

假设您向Items表添加了列颜色。现在需要将
AA_DB_VERSION
增加到2,并提供一个脚本
2.sql

ALTER TABLE Items ADD COLUMN color INTEGER;

万分感谢你!很多天以来,我一直在为这个问题苦苦挣扎。我已将数据库版本从1升级到3。我的文件(3.sql)是正确的,但(2.sql)有问题。我的印象是,它只选择与新版本相对应的文件。“自然排序”是什么意思?是
“3”<“10”
还是
“10”<“3”