こんにちは
前の記事でデータベースを作る記事がありましたが、
その続きを書こうと思います。
前回の記事
今日はデータベースの操作について、ご紹介します。
①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 件のコメント:
コメントを投稿