GreenDao版本升级

最近项目中用到了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数据库进行升级,同时也不用删除之前的数据,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、关于greenDAO greenDAO应该算是当前最火的数据库开源框架了,它是一个将对象映射到SQLite数据...
    当幸福来敲门58阅读 13,946评论 3 19
  • 序言 (写分享前的序言)大家好.很高兴能为大家分享Android之GreenDao笔记,也希望能和大家一起学习进步...
    王黎聪阅读 1,118评论 4 11
  • GreenDao 介绍:greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操...
    小董666阅读 773评论 0 1
  • (一)GreenDao简介 GreenDao是一个对象关系映射(ORM)的开源框架,目前最主流的安卓数据库操作框架...
    miss2008阅读 5,332评论 4 18
  • 习惯人群中找你的影子 回想那些幸福的日子 但其实我明白 我和从前的我 已经分开很远很远 寂寞世界中的两颗心 寂寞城...
    骚之哈塞給阅读 242评论 0 1