2010-11-21 2 views
1

Grundsätzlich möchte ich sqlite Schemata und Daten entsprechend migrieren, wie ich iPhone-Anwendungen aktualisieren. Ich habe gehört, dass Migrations-Frameworks in den Bereichen Ruby, Java und .NET immer beliebter werden, aber gibt es etwas, das mir im iOS-Bereich hilft?Welche Möglichkeiten gibt es für die Migration von SQLite-Datenbanken beim Upgrade von OS-Anwendungen?

CoreData ist im Moment keine Option für mich. (Bitte fragen Sie nicht warum, ist es einfach nicht.)

Wenn eine Migrationsbibliothek nicht verfügbar ist, welche Ansätze nehmen Sie?

Antwort

1

In meiner Vergangenheit habe ich normalerweise eine Versionsinfo mit einem PRAGMA-Befehl in der Datenbank gespeichert. Wenn meine App gestartet wird, überprüfe ich, in welcher Version sich die Datenbank gerade befindet, und rufe alle erforderlichen Aktualisierungsroutinen auf, um die Struktur zu ändern.

Für die meisten Fälle, die ein ganzes Framework zu tun haben, ist Overkill; vor allem, wenn Sie weniger als 10 oder 20 Tabellen in der Datenbank haben.

Einige Pseudo-Code:

currentVersion = getCurrentDbVersion() 

if currentVersion < 2 then 
    upgradeToVersion2(); 
end if 

if currentVersion < 3 then 
    upgradeToVersion3(); 
end if 

if currentVersion < 4 then 
    upgradeToVersion4(); 
end if 

Hier sind einige weitere Informationen über diese PRAGMA Befehl: http://www.sqlite.org/pragma.html#pragma_user_version

Hoffnung, das hilft. :)

+1

Wenn ich dies tun musste, habe ich eine Reihe von Versionen und Update-Anweisungen; Der Code iteriert den Code und führt die Aktualisierungsanweisungen für jede Version aus, wenn die Datenbank älter ist (die letzte ist z. B. "PRAGMA user_version = 1"). Es scheint in Ordnung zu sein. Die vorherige "Lösung" bestand lediglich darin, alle update-Anweisungen auszuführen, mit der Annahme, dass wir nur Tabellen/Spalten hinzufügen würden, so dass ein erneutes Anwenden alter Aktualisierungen harmlos fehlschlagen würde. –

Verwandte Themen