読者です 読者をやめる 読者になる 読者になる

ツヨシのブログ

技術的な事とか日常の事とか徒然なるままに

iOSでSQLiteを使いたいのでFMDBライブラリを使ってみた

FMDBの使いかた

iOSを開発する上で使用するデータをどのように保存するかを考える際に、CoreDataという選択があります。これの使いかたを調べようかなと思ったけど、なんとなくSQLite3を使いたいと思い、調べているうちにFMDBというライブラリにたどり着きました。このライブラリを使用することで簡単にSQLite3が使用できます。 そんなFMDBライブラリの使い方をまとめてみました。

FMDBソースの取得

FMDBはオープンソースで開発されており、MITライセンスにより自由に使用することができます。また、ソースはgithubに公開されておりだれでも使用することができます。公開場所は以下のサイトです。

https://github.com/ccgus/fmdb

上記のURLよりソースをダウンロード、解凍して、プロジェクトに以下のソースを追加します。

  • FMDatabase.h
  • FMDatabase.m
  • FMDatabaseAdditions.h
  • FMDatabaseAdditions.m
  • FMDatabasePool.h
  • FMDatabasePool.m
  • FMDatabaseQueue.h
  • FMDatabaseQueue.m
  • FMResultSet.h
  • FMResultSet.m

※fmdb.m以外のソースを追加します。

f:id:ginga0118:20140109113008p:plain

「libsqlite3.0.dylib」ライブラリの追加

FMDBを使用するためには「libsqlite3.0.dylib」ライブラリが必要になります。これはSQLiteを使用するためのライブラリです。 Build phasesを開き、 Link Binary With Libraries を選択します。+をクリックして、「libsqlite3.0.dylib」を選択してAddを押して追加します。f:id:ginga0118:20140109113011p:plain

ソースの記述

ヘッダのインポート

FMDBライブラリを使用するために「FMDatabase.h」をimportします。

#import "FMDatabase.h"

DBファイルの指定

使用するデータベースファイルを指定します。 「NSSearchPathForDirectoriesInDomains」で指定を行います。今回は「Documents」ディレクトリを使用して。「test.db」をデータベースファイルとしようと思いますので、次のようなコードを記述します。

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
NSString *dir = [paths objectAtIndex:0];
NSString *db_path = [dir stringByAppendingPathComponent:@"test.db"];

FMDBインスタンスの作成

次のコードにより、FMDBのインスタンスを作成します。

FMDatabase *db = [FMDatabase databaseWithPath:db_path];

SQL命令の実行

実行するSQL命令を記述して、DBのオープン、SQLの実行、DBのクローズを行います。

NSString *sql = @"CREATE TABLE personals (id, name);";
[db open];
[db executeUpdate:sql];
[db close];

SQL命令の実行結果

実行結果はFMResultSetクラスのインスタンスに入ります。実行結果を「result」に入れる場合には次のようになります。

NSString *sql= @"SELECT id, name FROM personals;";
[db open];
FMResultSet *result = [db executeQuery:sql];
while ( [result next] ) {
 int ret_id = [result intForColumn:@"id"];
 NSString *ret_name = [result stringForColumn:@"name"];
 NSLog(@"results: id[%d] %@", ret_id , ret_name);
}
[db close];

その他

ざっとですがFMDBライブラリを使用することで簡単にSQLiteを使用することができます。これにより大量の保存したいデータ、参照したいデータなどを扱っていくことができるようになります。 Enjoy!!

詳解 Objective-C 2.0 第3版

詳解 Objective-C 2.0 第3版