2010-11-21 3 views
1

基本的に私はiPhoneアプリケーションをアップグレードするので、sqliteスキーマとデータをそれに応じて移行したいと思います。私は、Ruby、Java、.NETの空間でマイグレーションのフレームワークが普及していると聞いてきましたが、iOSの空間で私を助けるものはありますか?OSアプリケーションのアップグレード時にsqliteデータベースを移行するためのオプションはありますか?

現時点でCoreDataは私にとっては選択肢ではありません。 (理由は問わないでください)

マイグレーションライブラリが利用できない場合、どのようなアプローチを取っていますか?

答えて

1

私は以前、データベースのPRAGMAコマンドを使ってバージョン情報を保管していました。私のアプリケーションが起動するたびに、データベースの現在のバージョンをチェックし、必要な更新ルーチンを呼び出して構造を変更します。

ほとんどの場合、それを行うためのフレームワーク全体が過剰です。特に、データベースに10または20未満のテーブルがある場合

いくつかの擬似コード: http://www.sqlite.org/pragma.html#pragma_user_version

役に立てば幸い:ここ

currentVersion = getCurrentDbVersion() 

if currentVersion < 2 then 
    upgradeToVersion2(); 
end if 

if currentVersion < 3 then 
    upgradeToVersion3(); 
end if 

if currentVersion < 4 then 
    upgradeToVersion4(); 
end if 

はそのPRAGMAコマンドについてのいくつかのより多くの情報があります。 :)

+1

私がこれをしなければならなかったとき、私は一連のバージョンと更新ステートメントを使用しました。コードはコードを繰り返して、データベースが古い(最後のものは例えば 'PRAGMA user_version = 1 ')場合、各バージョンの更新ステートメントを実行します。大丈夫です。以前の「解決策」は、すべての更新ステートメントを実行するだけでした。古い更新を再適用することは無害に失敗するため、テーブル/列を追加することを前提としていました。 –

関連する問題