我有以下情况: 我的应用程序随数据库版本4一起发布给客户。
我做了一些错误修正并添加了一些更多功能。这个过程也改变了我的模型,这就是为什么数据库也发生了变化。
如何检查客户在其设备上安装的数据库版本并将旧数据迁移到新数据库?在ActiveAndroid库中是否有onUpgrade方法或类似内容?
答案 0 :(得分:2)
在深入了解ActiveAndroid的源代码后,我找到了一个解决方案。 ActiveAndroid可以使用位于资产文件夹中的sql脚本从一个版本迁移到另一个版本。
它使用自然排序算法对位于assets / migrations /中的所有sql文件进行排序:
如果找到的每个SQL脚本的>都会被执行。 oldVersion和< = newVersion
答案 1 :(得分:0)
如果通过SQLiteOpenHelper访问数据库并执行正确的数据库版本控制,则可以使用它的onUpgrade方法运行一些代码来更新数据库。你应该做自定义解决方案。
答案 2 :(得分:0)
我建议您创建一个扩展SQLiteOpenHelper
的类。通过此类打开数据库时,它将在必要时自动调用onUpgrade()
方法。此方法的参数包括数据库模式的新旧版本号。
答案 3 :(得分:0)
每当架构发生更改时,您需要通过配置或AA_DB_VERSION
元数据来增加数据库版本号。如果添加了新类,ActiveAndroid会自动将它们添加到数据库中。但是,如果要更改现有表中的某些内容(例如,添加或删除列),则使用名为<NewVersion>.sql
的sql脚本完成此操作,其中NewVersion为AA_DB_VERSION
,位于assets/migrations
如果文件的文件名大于旧数据库版本且小于或等于新版本,ActiveAndroid将执行脚本。
假设您为Items表添加了一种列颜色。您现在需要将AA_DB_VERSION
增加到2并提供脚本2.sql
。
ALTER TABLE Items ADD COLUMN color INTEGER;