私のAndroid AppにはSQLiteデータベースとコンテンツプロバイダがあります。このコンテンツプロバイダは、アプリのAndroidManifest.xml
に登録されています。それはエクスポートされていないので、私のアプリだけがそれを見ることができます。コンテンツプロバイダを使用している場合にデータベースを再作成
ユーザーのプロファイルをリセットする際に、このデータベースを完全に消去し、最初から再作成したいと考えています。最初はアクティビティのコンテキストからdeleteDatabase()
を呼び出してみました。これは動作しますが、アプリが閉じられた後に再開された場合に限ります。それ以外の場合は、データベースが読み取り専用であるという行を挿入しようとするとクラッシュします。 deleteDatabase()
を呼び出す前に、最初に接続を閉じる必要があることを理解しています。しかし、接続はコンテンツプロバイダによって管理されており、私が理解する限り、手動で閉じるべきではありません。
代わりに、ContentResolver
のcall()
メソッドを使用して、テーブル内のすべてのデータを削除し、シーケンスカウントを手動でリセットするカスタム関数を呼び出しています。
これは機能しますが、今では手動で各テーブルからデータを削除する必要があり、今後変更を加える必要があります。
はContentProvider
を使用しているとき、私の
DatabaseHelper
(
SQLiteOpenHelper
)トリガーの
onCreate()
をデータベース全体を削除し、持っている良い方法はありますか?
なぜすべてのコンテンツを削除するだけではなく、再作成しますか? –
@DiegoTorresMilano私は、各テーブル/行を削除する必要がなく(したがってdeleteDatabaseを呼び出そうとせずに)データベースを新鮮な状態にすばやく更新しようとしていて、最初の設定プロセスで新しいプロファイルを再設定する走る現在、私はすべての行のデータを削除していますが、deleteDatabaseを呼び出すことに近いものがあれば興味があります。 – Programmer001
まだ開いている間にファイルを削除しようとしないでください。 –