SQLlitedbがあるアプリを開発しています。データベースをバックアップして再度復元する機能をユーザーに提供する必要があります。どうやってやるの?サンプルコード?
また、ユーザーがデータベースを保存してから、アプリを新しいDBバージョンコードにアップグレードした場合、作業は復元されますか?どうすればいいですか?
SQLlitedbがあるアプリを開発しています。データベースをバックアップして再度復元する機能をユーザーに提供する必要があります。どうやってやるの?サンプルコード?
また、ユーザーがデータベースを保存してから、アプリを新しいDBバージョンコードにアップグレードした場合、作業は復元されますか?どうすればいいですか?
フォルダ「/data/data/'your.app.package'/databases /」には、データベースである.dbファイルがあります。そのファイルをコピーして保存してから、元に戻すことができます。
データベースを外部ストレージにバックアップする方法の1つの例:
final String inFileName = "/data/data/<your.app.package>/databases/foo.db";
File dbFile = new File(inFileName);
FileInputStream fis = new FileInputStream(dbFile);
String outFileName = Environment.getExternalStorageDirectory()+"/database_copy.db";
// Open the empty db as the output stream
OutputStream output = new FileOutputStream(outFileName);
// Transfer bytes from the inputfile to the outputfile
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer))>0){
output.write(buffer, 0, length);
}
// Close the streams
output.flush();
output.close();
fis.close();
「バックアップ」とはどういう意味か明確にできますか?SQLiteには特定のバックアップ方法はありません。dbから行を読み取り、何らかの方法で保存する必要があります。多くの開発者はこれを行うためにXMLを使用しています。
ユーザーがデータベースを保存してから新しいDBバージョンコードに移動した場合は、復元の方法を決定する必要があります。繰り返しになりますが、バックアップを読み取ってデータベースに戻す作業を行う必要があります。SQLiteもAndroidもこれを行いません。
パッケージandroid.app.backupには、Android Backup Agentを操作するためのクラスが含まれていますが、これらは一般的なフレームワークを実装しています。バックアップする各ファイルまたはデータベースの詳細を実装するのはあなた次第です。