2016-11-19 112 views
0

我在我的android项目中使用GreenDAO。我在GreenDAO中看到一个问题。每当我对现有表进行更改并更改版本以迁移更改时,GreenDAO都将删除所有表。 我试图对GreenDAO生成的文件进行更改,但它不会是正确的过程,但它不起作用。GreenDao版本更改

@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,代码再生上运行的代码?有谁知道如何解决它?

编辑:
我看到与此相关的问题,几个问题,但他们都老了线程并没有帮助我。

回答

1

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

实现自己DevOpenHelper

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); 
     } 
    } 
} 

实例化类

DaoMaster.DevOpenHelper helper = new MyOpenHelper(this, databaseName, null); 
SQLiteDatabase db = helper.getWritableDatabase(); 
DaoMaster daoMaster = new DaoMaster(db); 

有关详细信息,我结账是如何做的here