Xcode:FMDBでSQLiteを使用
これまでiOSでデータベースを使ったアプリの開発を進めてきました。今までは「CoreData」を利用してきましたが今回は「FMDB」というライブラリを使ってデータベースを扱ってみたいと思います。
FMDBライブラリをダウンロード
GitHubのサイトからダウンロードします。
https://github.com/ccgus/fmdb
プロジェクトに追加
ダウンロードしたZIPファイルを解凍して、
「fmdb-master」->「src」->「fmdb」フォルダをプロジェクトへ追加します。
「libsqlite3.0.dylib」を追加
SQLiteを使用するために「Targets」->「Build Phases」->「Link Binary With Libraries」から「libsqlite3.0.dylib」を追加します。
これで準備が整いました。
データベース・テーブルを作成
#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ファイルを確認してみます。
レコードを追加
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文を扱う事が多いのでこれ機に知識の幅を広げていきたいと思います。
コメントをどうぞ