FMDB でカラムの存在確認

iOS 開発でローカル DB を操作する際に利用できる FMDB について紹介していきます。

自分が開発しているアプリでは FMDB ではなく社内のライブラリを使って DB 操作を行っています。ただそのアプリのローカル DB のテーブルにカラムを追加する必要があり、すでにアプリをインストール済の端末に対しては DDL 文を発行しなければなりませんでした。そのため、対象のカラムがローカル DB の該当テーブルに存在するか判定する処理が必要でした。そこで、FMDB を使ってそのあたりの処理を行いました。

準備すること
  1. libaqlite3.0.dylib を Xcode プロジェクトに追加
  2. github からダウンロード
  3. 展開し /src/fmdb 配下にソースファイルがあることを確認
  4. 上記ファイルを Xcode プロジェクト内に配置する

   f:id:tunanosuke:20140508141417p:plain

これで準備完了です。あとは必要に応じて使いたいときにヘッダーファイルを 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 で十分。。。