3

事前に入力されたデータ (500 行以上) を含むテーブルがいくつかあり、ユーザーが入力するテーブルもある Sqlite DB を使用して Android アプリを作成しています。

データベースの配布を計画している方法は、Android アプリケーションで独自の SQLite データベースを使用してアプリに事前入力されたデータベースを追加する次の方法です。

これには問題がありますが、アップグレードに関しては、事前に入力されたテーブルに多数の行を追加し、既存の行の多くのデータを変更する可能性があるため、既存のものを完全に置き換えたいと考えていますユーザーが入力したテーブルはそのまま残します。

別の投稿を見つけましたテーブルを再作成せずにデバイス上の事前入力されたsqliteデータベースをアップグレードするにはどうすればよいですか? アップグレードをできるだけ効率的にしたいので、ユーザーがこれは完全に間違ったアプローチである可能性があると示唆しています(「「正しい」方法は、あなたが設定した方法とはまったく異なります」)。まだ最初のバージョンを実際に公開していないので、アプローチを変更する必要がありますか?

このシナリオで最も効果的なアプローチは何ですか?

4

1 に答える 1

3

データベースの配布を計画している方法は、Android アプリケーションで独自の SQLite データベースを使用して、事前入力されたデータベースをアプリに追加する次の方法です。

そのコードは、しばらくの間古くなっています。などSQLiteAssetHelper、より最新でサポートされているものを使用することを検討してください。

これらの既存のテーブルを新しい事前入力テーブルのテーブルに完全に置き換えたいが、ユーザーが入力したテーブルはそのまま残したい

SQLiteAssetHelperすぐに使用できる 2 つのパターンがサポートされています。

  • データベース全体を新しいパッケージ コピーに置き換える
  • アプリにパッケージ化されたコピーを無視して、独自の SQL スクリプトを実行して既存のインストール済みデータベースを更新します。

はオープン ソースであるためSQLiteAssetHelper、Jeff Gilfelt がどのように記述したかを確認し、ハイブリッド シナリオをサポートするためにそれを活用してみてください。

個人的には、「事前入力テーブル」と「ユーザー入力テーブル」を結合する必要がない限り、2 つの別々のデータベースを使用することをお勧めします。1 つは事前入力されたすべてのデータで、アプリの更新に基づいて必要に応じて完全に置き換えることができます。もう 1 つはユーザー テーブルを保持し、より従来型の で処理しますSQLiteOpenHelperATTACH DATABASEまた、私は個人的にそのシナリオを試したことはありませんが、 を使用して 2 つの別個のデータベースでも結合できる場合があります。

于 2013-07-09T11:21:14.890 に答える