2016-11-19 15 views
0

私はアンドロイドプロジェクトでGreenDAOを使用しています。私はGreenDAOに問題があると思う。既存のテーブルを変更してバージョンを変更して変更を移行するたびに、GreenDAOはすべてのテーブルを削除します。 GreenDAOgeneratedファイルを変更しようとしましたが、正しい手順ではなく、動作しませんでした。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をコメントしようとした、コードは、コードを実行している上で再生されますか?誰もそれを修正する方法を知っていますか?

EDIT:
私はこの問題に関連したいくつかの質問を見ましたが、彼らはOLDスレッドが私を助けていないです。

答えて

1

DaoMaster.DevOpenHelperを拡張し、onUpgradeの独自の実装を提供できます。

は、私はそれをやったhere精算方法を、あなたのクラスの詳細については

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

独自の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); 
     } 
    } 
} 

をインスタンス化し実装します。