Wie Sie verhindern, dass das duplizieren von SQLite database in android?
Mein Programm liest eine XML-Datei auf dem internet, nimmt die Zeit und erstellt/schreibt eine SQLite-Datenbank. Wenn das nächste mal Daten erforderlich ist, wenn die Zeit >24h aktualisieren der Datenbank (xml-erneut heruntergeladen).
Das problem ist, dass immer wenn ich die app neu starten im AVD hat es erneut herunterladen und so merke ich, dass alle Daten in der Datenbank neu geschrieben wird (dupliziert). Also statt 10 Elemente habe ich 20 (10+10 Duplikate). Wenn ich das relaunch wieder bekomme ich weitere 10 items dupliziert.
Dachte ich darüber nach, wie ich verhindern könnte, die eine Vervielfältigung der Datenbank (oder löschen Sie den alten Eintrag), so habe ich beschlossen, erhöhen Sie die Datenbank-version jedes mal, wenn der Inhalt heruntergeladen wird. Ich dachte, das würde auslösen, die onUpgrade () - Methode, damit die Daten wären gelöscht, aber es ändert sich nichts.
Nun bin ich ratlos. Wie sollte ich dies angehen?
- Was ist ein
DELETE FROM MyTable
bevor Sie füttern die Datenbank mit den heruntergeladenen Daten? Ich kann nicht herausfinden, was das eigentliche problem ist. Version ändern, ist für ein Datenbank-Schema aktualisieren (wenn Sie neue Tabellen oder Spalten). - gut, das ist genau, was ich machen wollte (und gemacht habe), also danke
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie erstellen einen index für die Spalten, die eine eindeutige Kennung.
sehen dieser Artikel auf der SQLite website.
Oder (wie in Ihrem Kommentar), können Sie die Tabelle in einen cursor und prüfen für jeden.
Ihrer Datenbank zu erstellen, werden Sie wollen, verwenden Sie die UNIQUE-Einschränkung. Sie können nicht wollen, den KONFLIKT zu ERSETZEN, die ich benutze, aber Sie sollten Sie bekommen die Idee.
Ex:
Hier ist ein weiteres solides thread, der über Sie spricht, wie gut.
SQLite-Tabellen-integritätsregel - unique über mehrere Spalten
Hier ist einige weitere Infos über das android-sqlite: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html