我正在Kotlin/Native (iOS & Android)中使用iOS,我正在寻找删除DB (所有表)的最佳方法。用例:从应用程序中注销。所以,我在寻找一种从所有表中删除数据的方法。到目前为止,我尝试过这样做,但我无法访问sqlite_master表:
dropAllTables:
PRAGMA writable_schema = 1;
DELETE FROM sqlite_master WHERE type IN ('table', 'index', 'trigger');
PRAGMA writable_schema = 0;
VACUUM;
PRAGMA INTEGRITY_CHECK;错误:No table found with name sqlite_master
使用SQLDeligth**?**删除所有表的最佳方法是什么(我希望避免从每个表中写入SQLDeligth**?**)
而且,upsert {似乎也不适合我。不知道如何为它提供label。
发布于 2020-09-06 10:31:14
如果您不关心dB中的任何内容,并且希望它完全清除,您只需关闭连接并删除文件,下次打开连接时,它将重新创建db。
发布于 2020-10-03 12:16:26
由于我希望在DB中保留一些不可变的数据,所以original解决方案将无法工作,因此我接下来做了如下工作:
SqlDriver
val cursor = sqlDriver.executeQuery(
null,
"SELECT name FROM sqlite_master WHERE type = 'table' " +
//system tables
"AND name NOT LIKE '%sqlite%' " +
"AND name NOT LIKE '%metadata%' " +
"AND name NOT LIKE '%ios%' " +
"AND name NOT LIKE '%android%' " +
//immutable tables
"AND name != 'MySomeTalbe';",
0
)
while (cursor.next()) {
cursor.getString(0)?.let {
sqlDriver.execute(null, "DELETE FROM $it", 0)
}
}注:这是Kotlin/本地项目
https://stackoverflow.com/questions/63762539
复制相似问题