7

私の Android アプリには、SQLite データベースとコンテンツ プロバイダーがあります。このコンテンツ プロバイダは、アプリの に登録されていAndroidManifest.xmlます。エクスポートされていないため、私のアプリのみが表示されます。

ユーザーのプロファイルをリセットする一環として、このデータベースを完全に消去し、最初から再作成したいと考えています。deleteDatabase()最初はアクティビティのコンテキストから呼び出してみました。これは機能しますが、アプリを閉じてから再度開いた場合のみです。そうしないと、データベースが読み取り専用であると言って行を挿入しようとするとクラッシュします。私の理解では、 を呼び出す前に、まず接続を閉じる必要がありますdeleteDatabase()。それでも、接続はコンテンツ プロバイダーによって管理されており、私が理解している限り、手動で閉じるべきではありません。

別の方法として、 のcall()メソッドを使用ContentResolverして、テーブル内のすべてのデータを削除し、シーケンス カウントを手動でリセットするカスタム関数を呼び出しています。

これは機能しますが、各テーブルから手動でデータを削除する必要があり、将来行った変更を追跡する必要があります。

onCreate()データベース全体を削除し、使用時にDatabaseHelper( SQLiteOpenHelper) トリガーを使用するより良い方法はありますContentProviderか?

4

1 に答える 1

1

頭に浮かぶ 1 つの提案は、カスタム関数にテーブルを削除して再作成させることです。onCreate()のテーブルを作成するためのコードは既にありますDatabaseHelperDatabaseHelperとカスタム メソッドの両方からアクセスできる場所でこれをリファクタリングします。

于 2016-11-25T00:41:51.403 に答える