2012年2月19日日曜日

データベースの操作(sqlite3)

こんにちは

前の記事でデータベースを作る記事がありましたが、
その続きを書こうと思います。

前回の記事

今日はデータベースの操作について、ご紹介します。

①DBOPEN
②DBCLOSE
②トランケート
④コミット
⑤ロールバック

これらは、関数化してあると良いです。

私は下記の用に関数化して使っています。

①DBOPEN------------------------------------------------------------------------

//*******************************
//関数:dbOpen
//概要:DBOPEN
//*******************************
-(void)dbOpen {
NSLog(@"DB Open");

sqlite3* db;

NSString* work_path;
NSString* database_filename;

NSString* database_path;
NSString* template_path;

// データベース名をここでは “testDB.sqlite” とします。
database_filename = @"database2.sqlite";

// データベースファイルを格納するために文書フォルダーを取得します。
work_path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

// データベースファイルのパスを取得します。
database_path = [NSString stringWithFormat:@"%@/%@", work_path, database_filename];

// 文書フォルダーにデータベースファイルが存在しているかを確認します。
NSFileManager* manager = [NSFileManager defaultManager];

if (![manager fileExistsAtPath:database_path])
{
    NSError* error = nil;
    
    // 文書フォルダーに存在しない場合は、データベースの複製元をバンドルから取得します。
    template_path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:database_filename];
    
    // バンドルから取得したデータベースファイルを文書フォルダーにコピーします。
    if (![manager copyItemAtPath:template_path toPath:database_path error:&error])
    {
        // データベースファイルのコピーに失敗した場合の処理です。
        NSLog(@"DB読み込み失敗");
    } else {
        NSLog(@"DB読み込み成功");
    }
    
}else {
    NSLog(@"DB発見");
}


// 文書フォルダーに用意されたデータベースファイルを開きます。
if (sqlite3_open([database_path UTF8String], &db) == SQLITE_OK)
{
    // データベースファイルを SQLite で開くことに成功しました。
    NSLog(@"DBopen成功");
}}


②DBCLOSE------------------------------------------------------------------------

//*******************************
//関数:dbclose
//概要:DBclose
//*******************************
-(void)dbClose {
    sqlite3* db;
NSLog(@"DB Close");
    
if (db) {
// DB Close
sqlite3_close(db);
}
db = nil;
}

③トランケート------------------------------------------------------------------------

//*******************************
//関数:dbBegin
//概要:トランケート
//*******************************

-(void)dbBegin {
    sqlite3* db;
sqlite3_exec(db, "BEGIN", NULL, NULL, NULL );
}

④コミット------------------------------------------------------------------------


//*******************************
//関数:dbCommit
//概要:コミット
//*******************************

-(void)dbCommit {
    sqlite3* db;
sqlite3_exec(db, "COMMIT", NULL, NULL, NULL );
}

⑤ロールバック------------------------------------------------------------------------

//*******************************
//関数:dbRollback
//概要:ロールバック
//*******************************

-(void)dbRollback {
    sqlite3* db;
sqlite3_exec(db, "ROLLBACK", NULL, NULL, NULL );
}















0 件のコメント:

コメントを投稿