繁体   English   中英

删除 Sugar ORM 中所有表的所有数据

[英]Delete all data from all tables in Sugar ORM

我在我的应用程序中使用 Sugar ORM 1.5,我想在用户注销时清除所有信息。

如果可能,我想避免删除数据库文件或使用纯 SQLite 脚本。

我找到的唯一解决方案是在所有表上使用 deleteAll,但我想知道是否有更好的方法来做到这一点。

问候,

编辑

我解决了删除数据库的问题,只是调用SugarContext.terminate(); 在删除数据库和SugarContext.init(context); 之后。

看起来像Henry Dang在评论中指出的最好的解决方案,并且比删除所有数据更快。

这个片段对我有用。 它终止上下文删除所有表并重新创建它们:

SugarContext.terminate();
SchemaGenerator schemaGenerator = new SchemaGenerator(getApplicationContext());
schemaGenerator.deleteTables(new SugarDb(getApplicationContext()).getDB());
SugarContext.init(getApplicationContext());
schemaGenerator.createDatabase(new SugarDb(getApplicationContext()).getDB());

SchemaGenerator 来自 com.orm,我的 SugarORM 版本是 1.5。

对于只想删除所有记录(不是表或数据库)的其他用户

public static void deleteAllrecords(Context applicationContext) {
    List<Class> domainClasses = getDomainClasses(applicationContext);
    for (Class domain : domainClasses) {
        SugarRecord.deleteAll(domain);
    }
}

如果我们也想删除序列,你可以在 for 循环中添加这一行

            SugarRecord.executeQuery("DELETE FROM SQLITE_SEQUENCE WHERE NAME = '" + NamingHelper.toSQLName(domain) + "'");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM