Android——数据库的升级

2019-06-27  本文已影响0人  Lonelyice

在版本迭代时,我们经常需要对数据库进行升级,而GreenDAO默认的DaoMaster.DevOpenHelper在进行数据升级时,会把旧表删除,然后创建新表,并没有迁移旧数据到新表中,从而造成数据丢失。

这在实际中是不可取的,因此我们需要作出调整。下面介绍数据库升级的步骤与要点

1、复制MigrationHelper到项目,网上有不少MigrationHelper的源码,这里采用的是https://github.com/yuweiguocn/GreenDaoUpgradeHelper.中的MigrationHelper,它主要是通过创建一个临时表,将旧表的数据迁移到新表中。

2、新建一个类,继承DaoMaster.DevOpenHelper,重写onUpgrade(Database db, int oldVersion, int newVersion)方法,在该方法中使用MigrationHelper进行数据库升级以及数据迁移。

然后使用MyOpenHelper替代DaoMaster.DevOpenHelper来进行创建数据库等操作

3、在表实体中,调整其中的变量(表字段),一般就是新增/删除/修改字段。注意:

1)新增的字段或修改的字段,其变量类型应使用基础数据类型的包装类,如使用Integer而不是int,避免升级过程中报错。

2)根据MigrationHelper中的代码,升级后,新增的字段和修改的字段,都会默认被赋予null值。

4、将原本自动生成的构造方法以及getter/setter方法删除,重新Build—>Make Project进行生成。

5、修改Module下build.gradle中数据库的版本号schemaVersion ,递增加1即可,最后运行app

上一篇下一篇

猜你喜欢

热点阅读