私はアプリストア(バージョン1.0)にアプリケーションをアップロードしました。私のアプリはいくつかのデータを格納するためにsqliteデータベースを使用しています。今、私はデータベースにいくつかの変更を加えました(私のデータベースのテーブルの1つに2つまたは3つの新しいカラムを追加しました)。私は新しいバージョン1.1(別のDB構造を持っている)で私のアプリの以前のバージョンを更新したい。今バージョン1.0を使用しているユーザーがアプリケーションをバージョン1.1にアップグレードすると、dbはすでにアプリケーションサンドボックスに存在しているため、アプリケーションはバージョン1.1を指していますが、dbはまだ古いものです。私は、もしあれば、古いデータを持つ新しいデータベースを持っていたい。私を助けてください。ありがとう。新しいバージョンを別のsqlite db構造を持つアプリケーションストアに更新
答えて
sqliteはuser_versionプロパティと呼ばれるものをサポートしていますので、PRAGMA user_version
を実行すると、現在のアプリケーションデータベースのスキーマバージョンを問い合わせることができます。このクエリは、アプリの起動時に最初に書き込むことができます。
このuser_versionを更新するには、更新クエリPRAGMA user_version = version_num
を実行してください。
sqlite dbを作成するときは、このプロパティをuser_versionにすることをお勧めします。これにより、将来アップグレードする際に現在の値を照会できるようになります。スキーマのバージョンをアップグレードするには、必要なものを確認し、残りのalterまたはcreate tableを実行します。例えば
:最初のリリースでは
私はCOL1とTABLE1を作成し、col2に
私はTABLE1を作成するためにSQLを実行し、それが正常に完了すると、I = 1のプラグマuser_versionを実行するので、これは私が示されます現在のスキーマのバージョンは、私は、2
I最初のクエリuser_versionに私のスキーマのバージョンを変更する必要があり、それが価値だチェックし、それが1であれば、あなたが変更を実行する必要があり、私は新しいCOL3を追加し、将来のリリースでは1
です追加するスクリプト新しい列を設定し、ユーザーのバージョンを2に設定してください。
以前はuser_versionを設定していないため、新しいインストールとアップグレードのシナリオを区別することは困難です。今のところdbが存在すると仮定してアップグレードシナリオを実行し、alterスクリプトを実行し、存在しない場合は新しい インストールシナリオと仮定し、スクリプトの作成を実行します。しかし、あなたが上記のプラグマを使用して将来的にあなたの問題を解決できるかどうかを見てください。
は、データベーススキーマを更新して維持するための良い方法のようです。 –
古いデータベースであれば起動をチェックし、新しい構造(一時的な名前)で新しいデータベースを作成するルーチンがあれば、古いものから新しいものにすべてのデータをコピーして閉じる古いdb &それを削除し、新しいデータベースを閉じて名前を変更し、最後にもう一度開いて、更新されたアプリケーションを使用するようにします。簡単に、速く、&あなたはそれを行うためにSQLiteの詳細な知識を必要としません。
- 1. SQLite dB Androidが更新されない
- 2. 新しいSQLデータベース構造と一致するようにVisual StudioのDataSet構造を更新します
- 3. アクセスDBが別のテーブルから値を持つテーブルを更新する
- 4. テーブル構造を新しいテーブルにコピー
- 5. 更新数量が新しい構造体を追加しない
- 6. .htaccessでURL構造を更新する
- 7. Rails - 新しいテーブルエントリを持つページを更新する
- 8. アセンブリの参照をターゲットの新しいバージョンに更新する
- 9. App更新、古いDBデータを新しいDBに変換する
- 10. ビルド中に新しいビルドとリビジョンを持つassmeblyバージョン情報を更新するには?
- 11. 別のスレッドにアプリケーションドメインを持つ自己更新アプリケーション
- 12. 別の構造体にフレキシブルな配列メンバーを持つ構造体
- 13. as3の新しいクラス構造とスプライト
- 14. WPテーブルビューをdbテーブルの更新として更新します。
- 15. 同じバージョンの新しいファイルを持つMavenアップデート
- 16. コアデータマイグレーションxcode 4.2は、既にアプリケーションストアのアプリデータを更新していません
- 17. Coco2dでbox2dを新しいバージョンに更新する
- 18. 複数の結合とテーブル構造を持つMysql-db-select
- 19. 新しいバージョンのアプリケーションを作成するときのsqliteファイルの変更
- 20. アンドロイドsqliteの更新
- 21. NPM中にフォルダ構造を変更すると、私は次の構造を持つノードモジュールを持っている
- 22. DBの永続性を持たないシンプルなフォームの更新
- 23. dbテーブルのカラムを更新
- 24. C++構造体ポインタを使用してデータメンバーを更新する
- 25. コンストラクタを持たない新しい構造体を生成する方法
- 26. アプリケーションストアからの更新時にアプリケーションがクラッシュする
- 27. 更新cocos2d xcodeプロジェクトを新規バージョン
- 28. 更新Sqliteを表は、Android
- 29. Android SQlite更新クエリ
- 30. モンゴDB更新文
ここで私の答えを確認してください:http://stackoverflow.com/a/9851554/108574データベースアップグレード戦略。 –
@HeShimingありがとうございました。しかし、私はすでにアプリケーションストアにバージョン1.0をアップロードしています。メタデータテーブルはありません(データベースバージョンを格納するためのものです)。今、私は新しいバージョンをアップロードしたいと思うし、db構造に変更があります。では、どうやってこれを達成するのですか? – anshul
このメソッドはまだ有効です。 select文の戻り値をチェックするだけで、メタデータ表の有無を確認するだけです。それが存在しない場合は作成してください。 –