2016-11-19 3 views
0

Ich verwende GreenDAO in meinem Android-Projekt. Ich sehe ein Problem in GreenDAO. wenn ich Änderungen an den vorhandenen Tabellen machen und die Version ändern, um die Änderungen zu migrieren, GreenDAOis alle Tabellen zu löschen. Ich habe versucht, Änderungen in den GreenDAOgenerated Dateien zu machen, aber es ist nicht die richtige Vorgehensweise sein würde und es hat nicht funktioniert, aber.GreenDao Versionswechsel

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

Ich versuchte dropAllTables in obigen Code kommentieren sie den Code ausgeführt hat nicht funktioniert, wird der Code Regenerieren auf? Weiß jemand, wie man es repariert?

EDIT:
Ich sah einige Fragen zu diesem Problem zu tun haben, aber sie sind OLD Fäden nicht mir geholfen hat.

Antwort

1

Sie können DaoMaster.DevOpenHelper erweitern und bieten eine eigene Implementierung von onUpgrade.

Implementieren Sie Ihre eigene 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); 
     } 
    } 
} 

Instantiate Klasse

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

Weitere Einzelheiten der Kasse, wie ich es tat here.