SQLite Drop und Recreate Table

Wie kann ich eine Tabelle mit aktualisierten Informationen löschen und neu erstellen?

Beispielsweise; Ich habe einen Tisch in meiner Bewerbung mit 5 Datensätzen.

ID Entry 1 a 2 b 3 c 4 d 5 e 

Jetzt, wenn ich einen Datensatz lösche sagen, ID 3 die Tabelle wird

  ID Entry 1 a 2 b 4 d 5 e 

Wie kann ich es fallen lassen und es neu erstellen, um dies zu werden:

  ID Entry 1 a 2 b 3 d 4 e 

Tatsächlich wird das Löschen durch den Benutzer gesteuert, so dass jeder Datensatz jederzeit gelöscht werden kann.

  • IntelliJ SQLite Berechtigung auf Android Lollipop verweigert, arbeitete zuvor
  • Welche Java ORM ist für Android-Betriebssystem geeignet und unterstützt faul Liste?
  • Gleichzeitiges Schreiben in die Android-Datenbank (aus mehreren Diensten)?
  • Android-Datenbankverschlüsselung
  • Android SQLite Cursor außerhalb der Grenzen Ausnahme auf SELECT count (*) FROM Tabelle
  • Android SQLite DB zum Schließen
  • Android sqlite: Fehler beim Ändern des Gebietsschemas für db zu 'zh_CN'
  • Wie bekomme ich Daten von Cursor in ContextMenu
  • 2 Solutions collect form web for “SQLite Drop und Recreate Table”

    Sie können folgendes tun: die Zeile löschen, die Sie löschen möchten:

      public boolean deleteRow(int id) { return db.delete(YOUR_TABLE, ROW_ID + "=" + _id, null) > 0; } 

    Lesen Sie die verbleibenden Einträge (nur Einträge, nicht die ID) in eine ArrayList, lassen Sie Ihre Tabelle:

      db.execSQL("DROP TABLE IF EXISTS " + YOUR_TABLE); 

    Und deinen Tisch neu erstellen. Dann werden die ID-Nummern wieder von 1-XX im Auftrag sein

    Ich weiß, das ist ein alter Posten, aber ich dachte, ich würde die Dinge für andere, die das gleiche tun können, wie Sie auf Ihrem Kommentar basieren:

    Wenn ein Datensatz gelöscht wird, wird der Löschvorgang durch die aktuell ausgewählte Zeile durchgeführt, da ich nur bis zu Zeile 4 auswählen kann, ID 5 niemals gelöscht werden kann.

    Du solltest deine Ionen nicht neu erstellen. Es verwirrt die Dinge, wenn sie als Schlüssel in einer anderen Tabelle verwendet werden, plus wenn Sie eine große Datenbank haben, die Wiederherstellung von ihnen kann nur Zeit verschwenden, wenn es wirklich keine Notwendigkeit gibt.

    Was Sie tun sollten, ist ein Array der IDs zusammen mit einem Array der Einträge zu speichern, so dass Sie wissen, welche ID zu löschen, basierend auf welcher Zeile sie ausgewählt haben (oder eine andere Art der Verknüpfung der IDs und Werte, so dass Sie sie später packen können).

    Im obigen Beispiel, nachdem jemand die Zeile mit ID 3 gelöscht hat, würden deine Arrays so aussehen:

     entries = { "a","b","d","e" } ids = { 1,2,4,5 } 

    Wenn jemand "e" auswählt, welches das vierte Element ist, löschst du einfach aus der Tabelle, wo die ID gleich dem vierten Wert im ids-Array ist, 5 in diesem Fall.

    Auf diese Weise, wenn Gegenstände ständig hinzugefügt und entfernt werden, könnte Ihre Datenbank mit ids 2, 34, 56 und 435 enden. Es spielt keine Rolle, weil Ihr Code den Track behalten und wissen, welche ID zu löschen ist.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.