2016-04-06 12 views
0

Nach diesem Stack-Überlauf greenDao Schema UpgradeUpgrade existieren Tabelle greendao android Studio

Der Typ "DiscDev" seine eigene Frage beantworten, aber ich habe eine Frage, auf die ONUPGRADE Verfahren dieser folgenden Code:

if(oldVersion == 3 && newVersion == 4){ 
    boolean ifNotExists = false; 

    //Leave old tables alone and only create ones that didn't exist 
    //in the previous schema 
    NewTable1Dao.createTable(db, ifNotExists); 
    NewTable2Dao.createTable(db, ifNotExists); 
    NewTable3Dao.createTable(db, ifNotExists); 
    NewTable4Dao.createTable(db, ifNotExists); 
} else { 
    dropAllTables(db, true); 
    onCreate(db); 
} 

die Anzahl der alten Version und neue Version woher wusste er die alte Version ist 3 und neue Version ist 4? Und warum muss es statt der Deklaration der konstanten Zahl auch harten Code geben?

Antwort

0

Die OldVersion und NewVersion werden von der OpenHelper onUpgrade-Methode zur Verfügung gestellt. Es stellt OldVersion als die aktuelle Version der Datenbank zur Verfügung, die der Benutzer hat, und newVersion als die Version, auf die sie gerade aktualisieren.

Sie können die aktuelle Version, die newVersion sein wird, im grünen Dao-Generator einstellen.

public static void main(String[] args) throws Exception { 
    int currentVersion = 4; 
    Schema schema = new Schema(currentVersion, "com.example.app.model.generated"); 

    new DaoGenerator().generateAll(schema, "app/src/main/java/"); 
} 
+0

Es ist nicht die beste Antwort. denn wenn ich nur die aktuelle Version aktualisiere, wird die gesamte Datenbank zerstört, zum Beispiel Lieblingsdaten. (Alle Tabellen löschen) –

+0

Was Sie im onUpgrade tun, liegt bei Ihnen, Sie müssen nichts fallen lassen. Sie können die Migration des Schemas von einer Version zur nächsten durchführen. –

+0

weil es vom daogenerator erzeugt wird. Wenn Sie eine neue Entität hinzufügen, wird die Tabelle gelöscht. Wenn Sie zum Beispiel 1 APK erstellt haben und versuchen, etwas als Ihren Favoriten zu markieren, fügen Sie diesen Artikel in Ihre Favoritenliste ein. Versuchen Sie als Nächstes, eine neue Tabelle oder eine neue Entität in Ihre DB einzufügen und sie dann zu generieren und zu installieren, ohne die alte Version durch Herunterladen der APK zu deinstallieren. Es wird nicht die App abstürzen, aber es wird auch alle Ihre Lieblingsliste löschen. Um das zu verhindern, überprüfe meine Antwort. Es wird nichts gelöscht, nur neue Entitäten hinzufügen, die Sie neu hinzugefügt haben. –