Android file system
からデータベースファイルをプログラムで削除したいですか?シェルスクリプトでadb
を起動し、Androidスペースでシェルスクリプトを実行してデータベースを削除できますか? JUnit
テストケース内から(system()
呼び出しで)これを実行できますか?
Androidでデータベース全体を削除するにはどうすればよいですか?データベース作成をテストできるように、すべてを削除する必要があります。テーブルを削除できますが、それだけでは不十分です。これは、電話ではなくエミュレーターにあります。
コンテキストを取得し、データベースの名前を知ったら、次を使用します。
context.deleteDatabase(DATABASE_NAME);
この行が実行されたら、データベースを削除する必要があります。
シェルから入力するだけで簡単です:
adb Shell
cd /data/data
cd <your.application.Java.package>
cd databases
su rm <your db name>.db
SQLiteDatabase.deleteDatabase(File file)静的メソッドはAPI 16で追加されました。古いデバイスをサポートするアプリを作成したい場合、どうすればよいですか?
私が試した:file.delete();
しかし、SQLiteOpenHelperを台無しにします。
ありがとう。
NEVER MIND!後でContext。deleteDatabase()を使用していることに気付きました。コンテキスト1は非常に機能し、ジャーナルも削除します。私のために働く。
また、削除を行う前にSQLiteOpenHelp.close()を呼び出す必要があることがわかったため、LoaderManagerを使用して再作成できます。
試してください:
this.deleteDatabase(path);
または
context.deleteDatabase(path);
また、EclipseからDDMSを使用して非常に簡単にすることもできます。
エミュレータが実行されていることを確認してから、EclipseでDDMSパースペクティブに切り替えます。ファイルエクスプローラーへのフルアクセスが可能になり、データベース全体を簡単に削除できます。
context.deleteDatabase("database_name.db");
これは誰かを助けるかもしれません。それ以外の場合、拡張機能を言及する必要があります、それは動作しません。
context.deleteDatabase(DATABASE_NAME);すべての接続が閉じられている場合にのみデータベースを削除します。データベースヘルパーを処理するためにシングルトンインスタンスを維持している場合-開いている接続を簡単に閉じることができます。
Databasehelperを直接インスタンス化して複数の場所で使用する場合、一部の接続が開いていても、deleteDatabase + killProcessがジョブを実行します。これは、アプリケーションシナリオでアプリの再起動に問題がない場合に使用できます。
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));
}
現在のデータベースパスのファイルオブジェクトを作成し、フォルダーからファイルを削除するときに削除できます
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を実行するボタンを実装して、ユーザーがゲームの進行状況をリセットできるようにします。
アプリをアンインストールするときに古いDbを削除します。
Android:allowBackup = "false"AndroidManifest.xmlのアプリケーションタグで設定すると、問題が修正されました。何らかの奇妙な理由で、アプリを展開するたびにAndroid OSがバックアップから復元されたようです。