2016-07-22 9 views
3

私のアプリケーションでSugar ORM 1.5を使用しています。ユーザーのログオフ時にすべての情報を消去したいと思います。Sugar ORMのすべてのテーブルからすべてのデータを削除

可能であれば、データベースファイルを削除したり、純粋なSQLiteスクリプトを使用したりしないでください。

私が見つけた唯一の解決策は、すべてのテーブルでdeleteAllを使用していましたが、もっと良い方法があるかどうかを知りたいのです。

よろしく、

EDIT

私はちょうど後にデータベースとSugarContext.init(context);を削除する前にSugarContext.terminate();を呼び出して、データベースを削除していた問題を解決します。

Henry Dangのようにコメントに指摘されているように、すべてのデータを削除するよりも高速です。

+1

あなたの目標は、アプリ内のすべてのデータを削除する場合は、データベースファイルは、ほとんどのことを削除しません直感的なソリューションですか? –

+0

データベースの削除に問題がありました。アプリケーションを再起動するとデータベースが削除されるだけです。一方、私はシュガーのデータ操作能力についてもっと知りたいです –

答えて

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); 
    } 
} 
関連する問題