web-dev-qa-db-ja.com

プログラムでAndroidからSQLiteデータベースを削除する方法

Android file systemからデータベースファイルをプログラムで削除したいですか?シェルスクリプトでadbを起動し、Androidスペースでシェルスクリプトを実行してデータベースを削除できますか? JUnitテストケース内から(system()呼び出しで)これを実行できますか?

Androidでデータベース全体を削除するにはどうすればよいですか?データベース作成をテストできるように、すべてを削除する必要があります。テーブルを削除できますが、それだけでは不十分です。これは、電話ではなくエミュレーターにあります。

147
Jim

コンテキストを取得し、データベースの名前を知ったら、次を使用します。

context.deleteDatabase(DATABASE_NAME);

この行が実行されたら、データベースを削除する必要があります。

401
Luke Dunstan

シェルから入力するだけで簡単です:

adb Shell
cd /data/data
cd <your.application.Java.package>
cd databases
su rm <your db name>.db
13
barmaley

SQLiteDatabase.deleteDatabase(File file)静的メソッドはAPI 16で追加されました。古いデバイスをサポートするアプリを作成したい場合、どうすればよいですか?

私が試した:file.delete();

しかし、SQLiteOpenHelperを台無しにします。

ありがとう。

NEVER MIND!後でContext。deleteDatabase()を使用していることに気付きました。コンテキスト1は非常に機能し、ジャーナルも削除します。私のために働く。

また、削除を行う前にSQLiteOpenHelp.close()を呼び出す必要があることがわかったため、LoaderManagerを使用して再作成できます。

11
Rick Falck

試してください:

this.deleteDatabase(path); 

または

context.deleteDatabase(path);
10
Dnyanesh

また、EclipseからDDMSを使用して非常に簡単にすることもできます。

エミュレータが実行されていることを確認してから、EclipseでDDMSパースペクティブに切り替えます。ファイルエクスプローラーへのフルアクセスが可能になり、データベース全体を簡単に削除できます。

6
xtempore
context.deleteDatabase("database_name.db");

これは誰かを助けるかもしれません。それ以外の場合、拡張機能を言及する必要があります、それは動作しません。

4

context.deleteDatabase(DATABASE_NAME);すべての接続が閉じられている場合にのみデータベースを削除します。データベースヘルパーを処理するためにシングルトンインスタンスを維持している場合-開いている接続を簡単に閉じることができます。

Databasehelperを直接インスタンス化して複数の場所で使用する場合、一部の接続が開いていても、deleteDatabase + killProcessがジョブを実行します。これは、アプリケーションシナリオでアプリの再起動に問題がない場合に使用できます。

3
Aun

Androidデータベース削除メソッドを使用し、データベースが正常に削除されました

public bool DeleteDatabase()
        {
            var dbName = "TenderDb.db";
            var documentDirectoryPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
            var path = Path.Combine(documentDirectoryPath, dbName);
            return Android.Database.Sqlite.SQLiteDatabase.DeleteDatabase(new Java.IO.File(path));
        }
0
Afshin Razaghi

現在のデータベースパスのファイルオブジェクトを作成し、フォルダーからファイルを削除するときに削除できます

    File data = Environment.getDataDirectory();
    String currentDBPath = "/data/com.example.demo/databases/" + DATABASE_NAME;
    File currentDB = new File(data, currentDBPath);
    boolean deleted = SQLiteDatabase.deleteDatabase(currentDB);

アセット内のデータベースの構造を変更した後、デバイス上のデータベースを「フォーマット」するために以下を使用しました。データベースをアセットから再度読み取るようにしたい場合は、MainActivityの行のコメントを解除するだけです。これにより、デバイスフォルダーの値と構造がリセットされ、assetフォルダー内の占有データベースと一致します。

    //database initialization. Uncomment to clear the database
    //deleteDatabase("questions.db");

次に、deleteDatabaseを実行するボタンを実装して、ユーザーがゲームの進行状況をリセットできるようにします。

0
Jussi Tamminen

アプリをアンインストールするときに古いDbを削除します。

Android:allowBackup = "false"AndroidManifest.xmlのアプリケーションタグで設定すると、問題が修正されました。何らかの奇妙な理由で、アプリを展開するたびにAndroid OSがバックアップから復元されたようです。

0
Anurag Mishra