官网
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() {@Overridepublic void onCreateAllTables(Database db, boolean ifNotExists) {DaoMaster.createAllTables(db, ifNotExists);}@Overridepublic 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);}@Overridepublic void onUpgrade(Database db, int oldVersion, int newVersion) {MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {@Overridepublic void onCreateAllTables(Database db, boolean ifNotExists) {DaoMaster.createAllTables(db, ifNotExists);}@Overridepublic 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());