美文网首页Android开发
GreenDao版本升级

GreenDao版本升级

作者: 请手下留情 | 来源:发表于2016-09-05 15:14 被阅读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数据库进行升级,同时也不用删除之前的数据,

    相关文章

      网友评论

        本文标题:GreenDao版本升级

        本文链接:https://www.haomeiwen.com/subject/ueprettx.html