https://github.com/yuweiguocn/GreenDaoUpgradeHelper/blob/master/README_CH.md
GreenDaoUpgradeHelper是一个greenDao的数据库升级帮助类。使用它可以很容易解决数据库升级问题,只需一行代码。
1.在根目录的build.gradle文件的repositories内添加如下代码:
- allprojects {
- repositories {
- ...
- maven { url "https://jitpack.io" }
- }
- }
2.添加依赖(greendao 3.0及以上)
- dependencies {
- compile 'org.greenrobot:greendao:3.2.0'
- compile 'io.github.yuweiguocn:GreenDaoUpgradeHelper:v2.2.1'
- }
如果你使用的greendao是3.0以前的版本,请使用下面的依赖:
- dependencies {
- compile 'de.greenrobot:greendao:2.0.0'
- compile 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v1.0.1'
- }
3.添加一个新类继承DaoMaster.OpenHelper,添加构造函数并实现onUpgrade方法,在onUpgrade方法添加如下代码即可,参数为所有的Dao类:
- MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
-
- @Override
- public void onCreateAllTables(Database db, boolean ifNotExists) {
- DaoMaster.createAllTables(db, ifNotExists);
- }
-
- @Override
- public void onDropAllTables(Database db, boolean ifExists) {
- DaoMaster.dropAllTables(db, ifExists);
- }
- },TestDataDao.class, TestData2Dao.class, TestData3Dao.class);
完整代码:
- public class MySQLiteOpenHelper extends DaoMaster.OpenHelper {
- public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
- super(context, name, factory);
- }
- @Override
- public void onUpgrade(Database db, int oldVersion, int newVersion) {
- MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
-
- @Override
- public void onCreateAllTables(Database db, boolean ifNotExists) {
- DaoMaster.createAllTables(db, ifNotExists);
- }
-
- @Override
- public void onDropAllTables(Database db, boolean ifExists) {
- DaoMaster.dropAllTables(db, ifExists);
- }
- },TestDataDao.class, TestData2Dao.class, TestData3Dao.class);
- }
- }
4.初始化
- //MigrationHelper.DEBUG = true; //如果你想查看日志信息,请将DEBUG设置为true
- MySQLiteOpenHelper helper = new MySQLiteOpenHelper(this, "test.db",
- null);
- daoMaster = new DaoMaster(helper.getWritableDatabase());