首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GreenDao版本更改

GreenDao版本更改
EN

Stack Overflow用户
提问于 2016-11-19 09:30:03
回答 1查看 882关注 0票数 0

我在我的安卓项目中使用GreenDAO。我在GreenDAO中看到了一个问题。每当我对现有表进行更改并更改版本以迁移更改时,GreenDAOis就会删除所有表。我试图对GreenDAOgenerated文件进行更改,但这并不是正确的过程,但是它没有工作。

代码语言:javascript
复制
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
  Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables");
  dropAllTables(db, true);
  onCreate(db);
}

我试着在上面的代码中注释dropAllTables --它没有工作,代码在运行时正在重新生成吗?有人知道怎么修吗?

编辑:

我几乎没有看到与这个问题有关的问题,但这些问题都是老生常谈,对我没有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-21 03:50:56

您可以扩展DaoMaster.DevOpenHelper并提供自己的onUpgrade实现。

实现您自己的DevOpenHelper

代码语言:javascript
复制
public class MyOpenHelper extends DaoMaster.DevOpenHelper {

    //..
    //override the constructor here by calling super
    //..

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        switch(oldVersion) {
        case 1:
            //upgrade logic from version 1 to 2
            /* break was omitted by purpose. */
        case 2:
            //upgrade logic from version 2 to 3
            /* break was omitted by purpose. */
        case 3:
            //upgrade logic from version 3 to 4
            break;
        default:
            throw new IllegalStateException(
                    "unknown oldVersion " + oldVersion);
        }
    }
}

实例化类

代码语言:javascript
复制
DaoMaster.DevOpenHelper helper = new MyOpenHelper(this, databaseName, null);
SQLiteDatabase db = helper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(db);

有关更多细节,请看一下我是如何做到的,这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40691277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档