2014年2月16日日曜日

【Objective-C】FMDBを利用してDB(SQlite)に接続して操作する方法

SQLiteのWrapper ライブラリであるFMDBを利用して SQLiteを操作するサンプルプログラムを作成しました。

◆事前準備

1.FMDBの取得
 こちらのサイトからソースコードをDownLoadします。

2.プロジェクトに追加
 FMDBのソースコードをプロジェクトに追加し、FMDBを利用できるようにします。
 サブフォルダを作成して、まとめて配置するとよいでしょう。


















 #fmdb.mは追加不要です。


3.FMDBを利用したデータベースプログラミング
 プログラム内でDBを作成してテーブルを作成する方法です。
 作成したDBは

 1.インクルードをする。
  #import "FMDatabase.h"

 2.作成されたDBが保存される場所
  /Users/username/Library/Application Support/iPhone
   Simulator/XXX/Applications/XXX/Documents/
  ※OsLion以降ではLibralyが隠しフォルダになっているので
   ターミナルでコマンドを入力して表示されるようにする必要があります。
   コマンド:chflags nohidden ~/Library/

 3.サンプルソース
  getPathメソッドでLibralyパスを取得しておく。
  あとはDBの作成・参照、テーブル作成、登録、抽出のメソッドのサンプルとなっています。
  DB_NAMEは定数を宣言しておいてください。

// Liblary pathの取得
- (void)getPath{
    NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory
                                                         , NSUserDomainMask, YES
                                                         );
    _dir = [paths objectAtIndex:0];
}


// DBの作成・参照
- (void)createDB{
    FMDatabase* db = [FMDatabase databaseWithPath:[
                                                   _dir stringByAppendingPathComponent:
                                                   DB_NAME
                                                  ]
                     ];
    //実行
    [db open];
    [db close];
}


// テーブル作成
- (void)createTable{
    FMDatabase* db = [
                      FMDatabase databaseWithPath:[
                                                   _dir stringByAppendingPathComponent:
                                                   DB_NAME
                                                   ]
                      ];

    NSString* sql = @"CREATE TABLE IF NOT EXISTS testTB (id TEXT,name TEXT);";
    
    [db open];
    [db executeUpdate:sql];
    [db close];
}

// テーブル登録
- (void)insTable{
    FMDatabase* db = [
                      FMDatabase databaseWithPath:[
                                                   _dir stringByAppendingPathComponent:
                                                   DB_NAME
                                                   ]
                      ];
    
    NSString* sql = @"INSERT INTO testTB (id ,name) VALUES (?,?)";
    
    [db open];
    [db executeUpdate:sql, @"aaa2" , @"bbb2"];
    [db close];
}

// テーブル取得
- (void)selTable{
    FMDatabase* db = [
                      FMDatabase databaseWithPath:[
                                                   _dir stringByAppendingPathComponent:
                                                   DB_NAME
                                                   ]
                      ];
    NSString*   sql = @"SELECT id, name FROM testTB;";
    
    [db open];
    FMResultSet *results = [db executeQuery:sql];
    while ([results next]) {
        NSLog(
              @"id:%@ ,name:%@"
            ,[results stringForColumn:@"id"]
            ,[results stringForColumn:@"name"]
              );

    }
    [db close];
}

 あとはSQLを応用していろいろなアプリケーションに適用できます。

4.DBに登録されたデータの確認方法
 SQliteのGUIツールを利用します。
 おすすめは、無料のLitaというアプリケーションです。














 Object-Cでイニシャルセットとして利用するテーブルのスクリプトや、マスターデータのSQLを作成して実行できますので、コーディング前の確認として大活躍します。
 

0 件のコメント:

コメントを投稿