2016-07-22 272 views
3

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

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

我发现的唯一解决方案是在所有表上使用deleteAll,但我想知道是否有更好的方法来实现它。

问候,

编辑

我解决这个问题我已经删除删除数据库和SugarContext.init(context);前后只调用SugarContext.terminate();数据库。

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

+1

如果你的目标是要删除的应用程序中的所有数据,那么其他用户不会删除数据库文件是最直观的方案 –

+0

我有问题要删除数据库,它只在我重新启动应用程序时删除数据库。另一方面,我想更多地了解Sugar的数据处理能力 –

回答

9

这段代码适合我。它终止上下文删除所有表并重新创建它们:

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。

+0

工程就像一个魅力。我感谢你。 –

+1

删除和重新创建表格会导致每次延迟...是否有任何解决方案只是清除记录! –

1

对谁只是想删除所有记录(未表或数据库)

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