2016-06-13 4 views
1

Ich suche nach Massenlöschung aus allen Tabellen aus der Datenbank.Wie eine Datenbank mit sqllite in einem einzigen Befehl abgeschnitten wird (Löschen von Datensätzen aus allen Tabellen in der Datenbank)

DELETE FROM TABLE1,TABLE2,TABLE3; --(Is it possible) 

wie wir haben Masseneinsatz

INSERT INTO TABLE (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9); 

Mein Code, mit dem ich nicht zufrieden bin, wie es so ist. Es ist in der Lage, dies zu tun.

Delete from table1; 
Delete from table2; 
Delete from table3; 

public void truncateDatabase() { 
    ArrayList<String> tables = new ArrayList<>(); 
    Cursor cursor = Database.getInstance().getWritableDatabase().rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null); 
    if (cursor.moveToFirst()) { 
     while (!cursor.isAfterLast()) { 
      tables.add(cursor.getString(0)); 
      cursor.moveToNext(); 
     } 
    } 
    cursor.close(); 

    for (String table : tables) { 
     Database.getInstance().getWritableDatabase().execSQL("DELETE FROM " + table); 
     Database.getInstance().getWritableDatabase().execSQL("VACUUM"); 
    } 
} 

Antwort

1

Wie auf einer einzigen Tabelle eine einzelne DELETE-Anweisung arbeitet in der documentation, gezeigt.

Es ist nichts falsch daran, mehrere DELETE-Anweisungen auszuführen.

Allerdings sollten Sie die VACUUM ausführen nur einmal, und betrachten eine Transaktion mit:

SQLiteDatabase db = Database.getInstance().getWritableDatabase(); 
db.beginTransaction(); 
try { 
    for (String table : tables) { 
     db.execSQL("DELETE FROM " + table); 
    } 
    db.setTransactionSuccessful(); 
} finally { 
    db.endTransaction(); 
} 
db.execSQL("VACUUM"); 
+0

ich mit aus der Tabelle löschen bin, ist es eine Möglichkeit, jeden Befehl, der alle Tabellen in der Datenbank –

+0

[trunacate kann Nein] (http://www.sqlite.org/lang.html). –

+0

Danke für die Hilfe CL, aber wie kann mein Code optimiert werden, da ist derzeit looping löschen und vacuum. Nach Ihrem Vorschlag >> (Aber Sie sollten den VACUUM nur einmal ausführen und eine Transaktion in Erwägung ziehen.) Jedes Beispiel, ich werde Ihnen sehr dankbar sein –

Verwandte Themen