お使いのブラウザは、バージョンが古すぎます。

このサイトは、Internet Explore8・Internet Explore9には対応しておりません。
恐れ入りますが、お使いのブラウザをバージョンアップしていただきますよう宜しくお願いいたします。

Xcode:FMDBでSQLiteを使用

これまでiOSでデータベースを使ったアプリの開発を進めてきました。今までは「CoreData」を利用してきましたが今回は「FMDB」というライブラリを使ってデータベースを扱ってみたいと思います。

FMDBライブラリをダウンロード

GitHubのサイトからダウンロードします。
https://github.com/ccgus/fmdb

プロジェクトに追加

ダウンロードしたZIPファイルを解凍して、
「fmdb-master」->「src」->「fmdb」フォルダをプロジェクトへ追加します。
スクリーンショット-2014-04-07-10.20.22(2)_03

「libsqlite3.0.dylib」を追加

SQLiteを使用するために「Targets」->「Build Phases」->「Link Binary With Libraries」から「libsqlite3.0.dylib」を追加します。
スクリーンショット-2014-04-07-10.27.24(2)_03
これで準備が整いました。

データベース・テーブルを作成

#import "FMDatabase.h" //インポートします。

次にデータベースとテーブルを作成します。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // パスとDBファイル名を指定
    NSArray  *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *dir = [paths objectAtIndex:0];
    NSString *db_path  = [dir stringByAppendingPathComponent:@"test.db"];
    FMDatabase *db = [FMDatabase databaseWithPath:db_path];
    // テーブルを作成
    NSString *sql = @"CREATE TABLE IF NOT EXISTS testdb (id INTEGER PRIMARY KEY , title TEXT ); ";
    [db open];
    // SQLを実行
    [db executeUpdate:sql];
    [db close];
}

一度ビルドして「Organizer」から作成したDBファイルを確認してみます。
スクリーンショット-2014-04-07-11.09.23(2)_03

レコードを追加

INSERT文を使用して先ほど作成したテーブルに追加します。

    /*中略*/
    FMDatabase *db  = [FMDatabase databaseWithPath:db_path];
    NSString *data_title = @"タイトル";
    // データ追加指定---------------------------------------------------
    NSString*sql = @"INSERT INTO testdb (title) VALUES (?)";
    [db open];
    // SQLを実行
    [db executeUpdate:sql,data_title];
    [db close];

データを抽出

テーブル内の要素を抽出したいと思います。

    /*中略*/
   FMDatabase *db  = [FMDatabase databaseWithPath:db_path];
   FMResultSet *rs = [db executeQuery:@"select id,title from testdb];
   [db open];
    while ([rs next]){
     //カラム名を指定してカラム値を取得
         int db_id = [rs intForColumn:@"id"];
         NSString *db_title = [rs stringForColumn:@"title"];
    }
    [rs close];

今回は、「FMDB」の基本的な導入からデータベースの生成について学習しました。
「CoreData」とは違い、SQL文を扱う事が多いのでこれ機に知識の幅を広げていきたいと思います。

コメントをどうぞ

メールアドレスは公開されません。* が付いている欄は必須項目です。


お気軽にお問い合わせください。

日本VTR実験室では、お仕事のご依頼、ブログ・コラムのご感想などを受け付けております。
アプリ開発・コンテンツ制作でお困りでしたら、お気軽にご相談ください。
ご連絡お待ちしております。

お問い合わせはこちらから

03-3541-1230

info@nvtrlab.jp

電話受付対応時間:平日AM9:30〜PM6:00