2016-11-19 109 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