MAUIでiOSアプリの開発!

MAUIを使ったiOSアプリの開発についての技術的なメモです。

アプリのアップデート時に、内部で保持するSQLiteのDBを作り直す方法

アプリでSQLiteを使用しており、dbファイルはLibraryフォルダ配下に格納しています。

アプリ起動時にdbファイルをチェックし、ファイルが存在しなければdbファイル作成とテーブルのCreate実行をしています。
アプリ起動時にdbファイルが存在すれば、テーブル・データをそのまま使います。

ただ、アプリをアップデートしたときにもdbファイルは残っているので、もし新バージョンでテーブル構成を変更していた場合に、新旧のテーブルに違いがでてしまい、アプリ実行時にSQLエラーになる可能性があります。

この問題を回避する方法を調べた結果、以下のサイトで整理されていました。

sqliteデータベースを利用しているiPhoneアプリのアップデート : iPhoneアプリ開発・Swift・Objective-C勉強まとめ

 

この中の「user_version pragma」を使う方法を試しました。

DBからSQLでuser_varsionの値(整数値)を参照・設定することができます。

//値を参照
int value = await connection.ExecuteScalarAsync("PRAGMA user_version;");

//値を書き込み
await connection.ExecuteAsync(string.Format("PRAGMA user_version = {0};", value))

dbファイルを作成した時に「user_version」にアプリのバージョン(整数値に変換)を格納しておいて、アプリ起動時に「user_version」を取得してバージョンを比較し、古い値であればdbファイルを削除・テーブルCREATEを行うようにしました。

sqlite upgradation