前回は、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の導入をご検討してみてください!
最後までご覧いただき有難うございました。
弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。