0

次のシナリオを想像してください (アプリからのバックアップ/復元を許可し、file.db 全体のバックアップ/復元を行っています):

ユーザーはデータベースのバックアップを作成します。将来、新しいバージョンのデータベースを持つアプリケーションを更新します。ユーザーが古いバージョンでデータベースを復元するとどうなりますか?

どうすればこの種の問題を回避できますか?

BackupHelper を使用することをお勧めしますか? データベースの最悪のシナリオのシミュレーションを行い、20k を与えました。BackupHelper は 1MB 未満に推奨されます。使用することをお勧めしますか? アプリが 100kb を超えることはないと思います。

4

2 に答える 2

1

これは最善のアプローチではないかもしれませんが、次のように実行できます。

1- DB バージョンをデータベースに保存します。

2- データベースを復元した後、DB バージョンを確認し、それに応じて必要な変更を行います。お気に入り

void afterRestoration()
{
   long dbVersion = get from db;
   if(dbVersion == 1)
   {
     alter table1 add column1;
   }
   else
   {
   }
}
于 2012-11-12T13:05:29.363 に答える
1

、およびSQLiteOpenHelperの 3 つのコールバックを提供するを介して SQLite データベースにアクセスします。onCreate()onUpgrade()onOpen()

コンストラクターはパラメーターを宣言し、version内部的にデータベースのバージョン (ファイルに格納されている) と指定された引数を比較します。要求されたバージョンがファイルのバージョンよりも新しい場合、あなたonUpgrade(db, old, new)が呼び出され、テーブルを変更したり、行を埋めたりする機会が得られます。

復元手順では、開いているすべてのカーソルとヘルパーを単純に閉じて、新しいファイルをコピーする必要があります。

于 2012-11-12T13:10:26.103 に答える