如果我運行以下命令:
select * from sqlite_master where type = \'table\';
我得到了我創建的表,還有像:android_metadata和sqlite_sequence. 我想在我的應用程式中有一個功能可以擦除我的表的內容,但我寧愿不觸摸資料庫為自己創建的表。
我列出所有表,提取它們的名稱,過濾串列并在串列中呼叫 a delete from $tablename:
Future<List<QueryRow>> _getNumberOfExistingTableRows() async {
List<String> sqliteTableNames = ["android_metadata", "sqlite_sequence"];
String selectTablesSql = "select * from sqlite_master where type = \'table\';";
final result = await customWriteReturning(selectTablesSql);
result.removeWhere((row) => sqliteTableNames.contains(row.data["name"]));
return result;
}
List<String> tableNameList = _queryRowsToTableNames(await _getNumberOfExistingTableRows());
for (String tableName in tableNameList) {
await customStatement("delete from $tableName;");
}
它可以作業,但如果 SQLite 在未來版本中為自己創建另一個表,這也會擦除該表。
uj5u.com熱心網友回復:
使用
SELECT * FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE 'android_%';`
應該做的伎倆。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/511658.html
下一篇:默認表行/資料
