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