Frage Zimmer Persistenz Bibliothek. Alles löschen


Wie kann ich alle Einträge in einer bestimmten Tabelle mit der Raumpersistenzbibliothek löschen? Ich muss den Tisch fallen lassen, aber ich kann keine Informationen finden, wie das geht.

Nur wenn Datenbank migriert wird oder alle Einträge geladen und gelöscht werden :)


75
2018-05-29 14:08


Ursprung


Antworten:


Sie können dafür eine DAO-Methode erstellen.

@Dao 
interface MyDao {
    @Query("DELETE FROM myTableName")
    public void nukeTable();
}

204
2018-05-29 19:45



Ab Zimmer 1.1.0 Sie können verwenden clearAllTabellen () welche:

Löscht alle Zeilen aus allen Tabellen, die in dieser Datenbank als entities () registriert sind.


25
2018-03-28 22:12



Möchten Sie einen Eintrag aus der Tabelle in Room löschen, rufen Sie einfach diese Funktion auf,

@Dao
public interface myDao{
    @Delete
    void delete(MyModel model);
}

Aktualisieren: Und wenn Sie die komplette Tabelle löschen möchten, rufen Sie unter der Funktion

  @Query("DELETE FROM MyModel")
  void delete();

Hinweis: Hier Mein Modell ist ein Tabellenname.


8
2018-01-15 10:42



Für ein MigrationDu wirst bestanden ein SupportSQLiteDatabase und kann löschen, was Sie wollen über execSQL().

Darüber hinaus können Sie anrufen getOpenHelper() auf Ihrem RoomDatabase und nimm ein SupportSQLiteDatabase von ihr, wieder anrufend execSQL() um zu löschen, was Sie wollen.

Ich sehe keine auf Annotationen basierende Möglichkeit, alle Entitäten zu löschen, es sei denn, Sie haben sie alle im Speicher und können sie an a weitergeben @Delete-annotated Methode auf Ihrem Dao.


4
2018-05-29 14:13



Was kombinieren? Dick Lucas sagt und ein Autoincremental Reset von anderen StackOverFlow-Posts hinzufügen, ich denke, das kann funktionieren:

        fun clearAndResetAllTables(): Boolean {
        if (db== null) return false

        // reset all auto-incrementalValues
        val query = SimpleSQLiteQuery("DELETE FROM sqlite_sequence")

        db!!.beginTransaction()
        return try {
            db!!.clearAllTables()
            db!!.query(query)
            db!!.setTransactionSuccessful()
            true
        } catch (e: Exception){
            false
        } finally {
            db!!.endTransaction()
        }
    }

1
2017-07-16 15:09