FMDB でカラムの存在確認
iOS 開発でローカル DB を操作する際に利用できる FMDB について紹介していきます。
自分が開発しているアプリでは FMDB ではなく社内のライブラリを使って DB 操作を行っています。ただそのアプリのローカル DB のテーブルにカラムを追加する必要があり、すでにアプリをインストール済の端末に対しては DDL 文を発行しなければなりませんでした。そのため、対象のカラムがローカル DB の該当テーブルに存在するか判定する処理が必要でした。そこで、FMDB を使ってそのあたりの処理を行いました。
準備すること
- libaqlite3.0.dylib を Xcode プロジェクトに追加
- github からダウンロード
- 展開し /src/fmdb 配下にソースファイルがあることを確認
- 上記ファイルを Xcode プロジェクト内に配置する
これで準備完了です。あとは必要に応じて使いたいときにヘッダーファイルを import して利用できます。
カラム存在確認
1.ファイルインポート
#import "FBDatabase.h"
2. DB 接続
NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
NSString *dir = [paths objectAtIndex:0];
FMDatabase *db = [FMDatabase databaseWithPath:[dir stringByAppendingPathComponent:@"user.db"]];
3. DB の開閉
// DBオープン
[db open];
・
// 何らかの処理
・
// DBクローズ
[db close];
4.カラムの存在確認
BOOL isHoge = [db columnExists:@"columnName" inTableWithName:@"tableName"];
まとめ
社内のライブラリではなくローカル DB 操作は FMDB で十分。。。