2009-08-22 7 views
1

Ich habe eine SQLite3-Datenbank von der Befehlszeile erstellt und mehrere Datensätze eingefügt. Meine App ruft sie alle ab und zeigt sie gut. Ich gehe dann zurück und füge ein paar weitere Datensätze über den SQLite3-CLI ein, lösche die DB-Datei aus dem Dokumentenverzeichnis des Simulators, so dass sie aus dem Hauptpaket kopiert wird, und führe die App erneut aus, nur um zu sehen, dass sie nur die Original-Datensätze, die ich eingefügt habe. Die neuen Datensätze werden nicht angezeigt. Ich habe überprüft, dass die neue db-Datei in das Verzeichnis der Simulatorendokumente kopiert wurde, und wenn ich den sqlite3-cli darauf zeige, kann ich eine Auswahl * treffen und alle Datensätze sehen.Kann sqlite3-Datenbank nicht aktualisieren

Was könnte hier vor sich gehen? Es scheint fast so, als würde die vorherige Version der DB-Datei irgendwo zwischengespeichert und anstelle meiner aktualisierten Version verwendet.

// Scott

Antwort

2

Jedes Mal, wenn Sie eine App in xcode neu erstellen und ausführen, wird ein neuer Ordner im Anwendungsordner des iphone-Simulators erstellt. Wenn Ihre sqlite db von xcode eingebunden wird, kann die alte db in den neuen Ordner gestellt werden, während die alte db in den alten und jetzt nicht verwendeten Ordner verschoben wird.

+0

Wo setzt xcode diese neuen Ordner ein? Ich kenne nur projectname/build/Debug-iphonesimulator/projectname.app – skantner

+1

Ich fand es:/Benutzer/Benutzername/Bibliothek/Application Support/iPhone Simulator/Benutzer/Anwendungen / – skantner

0

ich seine Antwort nicht überprüft, aber Stephan Burlot said:

Sqlite einen Cache für Anfragen verwendet. Schließen Sie &, um die Datenbank von Zeit zu öffnen, um Cache-Speicher freizugeben.

(Ich glaube nicht, es ist wahr, dass jeder SQLite-Instanz-Anfragen-Caches, aber das könnte der Fall auf dem iPhone sein.)

Offensichtlich Sie mit dem Gedächtnis nicht betroffen sind, aber wenn es Caching Anfragen, vielleicht nur eine enge und wieder öffnen ist alles was Sie brauchen.

Wenn dies nicht der Fall ist, wäre meine nächste Vermutung, dass Ihre App nicht auf die Datei verweist, auf die sie gerade verweist - haben Sie sie einmal auf eine Datenbank mit einem anderen Namen und vergessen Sie, die App zu aktualisieren? Sie können dies überprüfen, indem Sie die Datenbank in Ihrer App aktualisieren und dann mit der CLI nach diesen Aktualisierungen suchen. Sie könnten nur feststellen, dass sie nicht auf die gleiche db schauen.