[Objective-C] データベースを使ってみよう! -トランザクション編-

前回は、Cocos Studioを使用したUI開発ツールについてご紹介しました。
今回は、一旦iOSアプリケーション開発に戻り、前にご紹介した「データベースを使ってみよう!」の続編で、
トランザクション制御についてご紹介します。

トランザクション制御について簡単に説明すると、下記のような機能となります。
・複数のSQL文を順に実行し、何らかのエラーが発生した場合、実行を取り消すことができる
・複数人が同時にINSERT/UPDATE/DELETEコマンドを要求した場合でも整合性が取れるように、他の人が
 トランザクション処理中の場合は、sqliteファイルがロックされ、解除されない限り、書き込みができない
・トランザクションを明示的に開始、終了する方が処理が高速である
 ※トランザクションを利用しなかった場合、SQL文を実行した回数だけ、commit処理が行われるので、
  処理に時間がかかってしまう

それでは、早速データベースを扱うアプリケーションを作成してみましょう。
トランザクション制御である下記の操作を行えるアプリケーションを作成したいと思います。
・コミット
・ロールバック

<iOSアプリケーションでデータベースを利用する方法>
【前提条件】
 ・前回に作成したXcodeプロジェクトを使用すること
  ※画面内に下記のボタンを用意しておくこと
   ・コミット
   ・ロールバック

【手順1】
「ViewController.m」ファイルに「コミットボタン」タップ時の処理を追加します。

//コミットボタンタップ処理
- (IBAction)commitButton_Click:(id)sender
{
    if(nil != self.db)
    {
        //クエリを作成する
        NSString *sql = @"INSERT INTO sampleTable(name, age) VALUES (?,?)";
        
        //テーブルを開く
        [self.db open];
        
        //トランザクション制御を行う
        [self.db beginTransaction];
        
        //クエリを実行する
        [self.db executeUpdate:sql, @"アライト太郎", [NSNumber numberWithInteger:11]];
        
        //コミットする
        [self.db commit];
        
        //テーブルを閉じる
        [self.db close];
    }
}

【手順2】
「ViewController.m」ファイルに「ロールバックボタン」タップ時の処理を追加します。

//ロールバックボタンタップ処理
- (IBAction)rollback_Click:(id)sender
{
    if(nil != self.db)
    {
        //クエリを作成する
        NSString *sql = @"INSERT INTO sampleTable(name, age) VALUES (?,?)";
        
        //テーブルを開く
        [self.db open];
        
        //トランザクション制御を行う
        [self.db beginTransaction];
        
        //クエリを実行する
        [self.db executeUpdate:sql, @"アライト次郎", [NSNumber numberWithInteger:10]];
        
        //ロールバックする
        [self.db rollback];
        
        //テーブルを閉じる
        [self.db close];
    }
}

お疲れ様でした。
これでデータベースを操作する処理を作成することができました。
それでは、実際にアプリケーションを実行してみましょう。

【手順1】
「コミット」ボタンをクリックします。

sqliteファイルを開き、データが追加されたことを確認します。

【手順2】
「ロールバック」ボタンをクリックします。

sqliteファイルを開き、データが追加されていないことを確認します。

これで、「データベースを使ってみよう! -トランザクション制御編-」は完了となります。

sqliteを使用することでデータの管理を行う事が可能であり、アプリケーション内で容易に
データベースへアクセスでき、操作することが可能です。

大規模なデータを取り扱うアプリケーションを開発する場合は、ぜひsqliteの導入をご検討してみてください!
最後までご覧いただき有難うございました。


弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。


コメントを残す

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

*