1
我正在從數據庫的所有表中搜索批量刪除。如何在單個命令中使用sqllite截斷數據庫(清除數據庫中所有表的記錄)
DELETE FROM TABLE1,TABLE2,TABLE3; --(Is it possible)
像我們有批量插入
INSERT INTO TABLE (a,b,c) VALUES (1,2,3),(4,5,6),(7,8,9);
我的代碼由我不滿意,因爲它是這樣的。它能夠做到這一點。
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");
}
}
我使用從表中刪除是有可trunacate數據庫 –
[所有表的任何命令的可能性否](http://www.sqlite.org/lang.html)。 –
感謝您的幫助CL,但我的代碼如何優化,因爲目前正在循環刪除和真空。根據你的建議>>(但你應該只執行一次VACUUM,並考慮使用交易)。任何例子我都會非常感謝你 –