Android开发

GreenDao版本升级

2016-09-05  本文已影响2097人  请手下留情

最近项目中用到了GreenDao,碰到了版本升级的问题。自己写数据库的时候都是自定义的helper,用GreenDao我们会发现在自动生成的DaoMaster中有一个内部类DevOpenHelper,GreenDao的版本升级就是在这里的onUpgrade()方法中进行的。

如果需要进行版本升级,第一步修改DaoMaster中的SCHEMA_VERSION字段,这个字段代表的事数据库的版本号。

一般版本升级都是往表中添加个字段,这时我们需要注释掉onUpgrade()中的        dropAllTables(db, true)方法和 onCreate(db)方法,然后对version进行对比是否进行版本升级,测试代码如下:

if (oldVersion!=newVersion) {

db.execSQL("ALTER TABLE TEST ADD \"NAME\" TEXT");

}

那如果想往数据库中添加一个新表该怎么操作呢,查看DaoMaster代码会发现有一个

createAllTables(SQLiteDatabase db, boolean ifNotExists)方法,标的创建都是在这个方法中进行的。比如我的完整方法代码如下:

/**

* Creates underlying database table using DAOs.

*/

public static voidcreateAllTables(SQLiteDatabase db, boolean ifNotExists) {

UserInfoDao.createTable(db,ifNotExists);

DiscountInfoDao.createTable(db,ifNotExists);

PoiAddEntityDao.createTable(db,ifNotExists);

TestDao.createTable(db,ifNotExists);

}

如果我想网数据库中添加一个test表,则在onUpgrade中执行建表语句即可,完整代码如下:

@Override

public voidonUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion) {

Log.i("greenDAO","Upgrading schema from version "+ oldVersion +" to "+ newVersion +" by dropping all tables");

//            dropAllTables(db, true);

//            onCreate(db);

if(newVersion != oldVersion) {

TestDao.createTable(db, true);

}

}

TestDao.createTable第二个参数传true表示没有表则创建。

以上就可以对GreenDao数据库进行升级,同时也不用删除之前的数据,

上一篇下一篇

猜你喜欢

热点阅读