Für SQLiteOpenHelper, wenn ich eine neue Tabelle innerhalb onCreate
muss ich alles innerhalb onUpgrade
tun? Ich füge eine völlig neue Tabelle hinzu. Ich glaube, ich muss die Versionsnummer ändern, aber das onUpgrade
sollte leer bleiben. Ist das korrekt?Hinzufügen neuer Tabelle zu SQLite
Antwort
Wenn Sie möchten, dass vorhandene Installationen der App diese neue Tabelle hinzufügen, dann müssen Sie die Version erhöhen und eine geeignete onUpgrade()
-Implementierung bereitstellen sowie die Tabelle in onCreate()
hinzufügen (die Sie bereits angegeben haben) .
Eine leere onUpgrade()
Implementierung ist nicht ausreichend; es muss tatsächlich etwas tun. Einige Leute lassen alle Tische fallen und rufen einfach onCreate()
direkt an, aber das funktioniert offensichtlich nicht gut, wenn Sie versuchen, bestehende Daten zu behalten. Ich benutze normalerweise die Durchsicht switch
Idiom, so dass, wenn ein Benutzer mehr als eine Version ist (z. B. Sie eine Version 3 veröffentlichen und ein Benutzer immer noch auf Version 1 ist) werden sie alle notwendigen Upgrades nacheinander durchlaufen:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion) {
case 1:
db.execSQL("CREATE TABLE " + ...);
// no break statement, so case 2 will execute after this.
case 2:
// more execSQL(), etc
}
}
Beachten Sie, dass Sie, wenn Sie nur entwickeln (also noch niemand die App hat), das Upgrade überspringen und nur 'onCreate()' ausführen können, aber Sie müssen die Datenbank entfernen, damit sie neu erstellt wird. Du kannst dies tun, indem du deinstallierst und neu installierst oder die App unter Einstellungen> Apps findest und dort ihre Daten löschst. – Karakuri
onUpgrade wird nur aufgerufen, wenn Sie die Versionsnummer erhöhen.
Um es zu implementieren, müssen Sie die Tabellen mit den von Ihnen vorgenommenen Änderungen neu erstellen und vorhandene Daten kopieren. Es gibt viele Tutorials zu diesem Thema.
Es ist nicht notwendig zu implementieren, wenn Sie noch lernen, aber wenn Sie nicht und Sie Änderungen an Ihrem Schema vornehmen, müssen Sie die App vom Gerät deinstallieren oder die Änderungen werden nicht angewendet.
onCreate()
wird nicht aufgerufen, wenn ein Benutzer Ihre App bereits zuvor installiert hat. Sie müssen also auch die neue Tabelle in onUpgrade()
erstellen. Achten Sie darauf, die Versionsnummer Ihrer Datenbank zu erhöhen.
Ich schlage vor, den Code zum Erstellen der Tabelle in einer Hilfsmethode, so dass Sie es aus beiden Callback-Methoden aufrufen können. Dies verringert die Wahrscheinlichkeit eines Fehlers, falls Sie den Code zum Erstellen der Tabelle ändern müssen.
Guter Punkt. Vielen Dank. +1 –
- 1. Hinzufügen neuer Zeilen zu einer vorhandenen Tabelle
- 2. Sqlite automatisch gelöscht alte Tabelle beim Erstellen neuer Tabelle
- 3. Hinzufügen neuer Entitäten zu DbContext
- 4. Hinzufügen neuer Symbole zu OpenUI5?
- 5. Hinzufügen neuer Werte zu Objekten
- 6. Authentifizierung zu neuer Sitzung hinzufügen
- 7. Hinzufügen neuer Artikel zu Listview
- 8. Hinzufügen neuer Benutzer zu Datenbank
- 9. Eine julianische Datumsspalte zu einer SQLite Tabelle hinzufügen
- 10. android SQLite überprüfen, ob eingefügt neuer Wert
- 11. Hinzufügen neuer Seiten zu Django Admin
- 12. Powershell - Hinzufügen neuer Daten zu XML
- 13. "Hinzufügen" neuer Schriftarten zu Tesseract eng.traineddata
- 14. Hinzufügen neuer Werte zu demselben Wörterbuchschlüssel
- 15. zsh Befehl zu neuer Zeile hinzufügen
- 16. Schreiben/Hinzufügen neuer Optionen zu iPhones .plist
- 17. Hinzufügen neuer Schriftarten zu Tesseract 3
- 18. Hinzufügen neuer Schriftarten zu TinyMCE Schriftoptionen
- 19. Hinzufügen neuer Treibercode zu Linux-Quellcode
- 20. JAVA: Hinzufügen neuer Schaltflächen zu einem Bildlauffeld
- 21. Hinzufügen neuer Funktionen zu einer Schnittstelle
- 22. Hinzufügen neuer Dateien zu einem Subversion-Repository
- 23. Hinzufügen neuer Option zu Aktionen Menü (Rad)
- 24. Hinzufügen neuer Blöcke zu Twig-Vorlage
- 25. Hinzufügen neuer Felder zu einem Bindungsschema
- 26. Hinzufügen neuer Spalte in der Tabelle von UI-Eingabe
- 27. Hinzufügen neuer Felder zum Erstellen einer separaten Tabelle
- 28. SQLite zu Android NDK-Projekt hinzufügen
- 29. Javascript Hinzufügen neuer Gebäude
- 30. Werte einer Spalte hinzufügen und in neuer Tabelle
Haben Sie bereits eine frühere Version Ihrer App veröffentlicht? –
Ja, ich habe :). –