SQL講座7回目、始めますよ~
この講座の下準備やらで結構時間使っていまい、遅くなりってしまいました(汗
今日はソースコードが画像でたくさんついてます
文字が小さくてみにくいときはクリックしたら大きく表示されるので活用してくださいね
<目次っぽい何か>
・iPhoneでのSQLiteを使う下準備
・SQL関連関数
・実際にSQLを書いてみる ←今日ここから
・データを取り出してみる
・ライブラリ化
1.実際にSQLを書いてみる
さぁ早速iPhone上でSQLiteを実行してみましょう!
前回フレームワークをプロジェクトに追加しましたね?
流れもおおざっぱに説明しましたね?覚えていますか???
・・・少し不安なので復習をかねてこれ見てください
![$TokoTokoSoftware-SQLの流れ](https://stat.ameba.jp/user_images/20110123/17/tokotokosoftware/a4/6c/p/t02200208_0800075711000824125.png?caw=800)
フローで書くとこんな感じです。
これは、CREATE文だろうがSELECT文だろうが同じです。
SELECT文以外の場合、データを取得しないので④のところは通らないというだけです。
SELECT文でデータが複数ある場合は③と④を何回もぐるぐる回ります。
この図をもとにプログラムを書いていきます。
とりあえず、適当なボタンを配置して
ボタンを押したときにデータベースの初期化(CREATE)をしてみましょう。
InterfaceBulderを使ってボタンを作成し、配置します。
![TokoTokoSoftware-createIB](https://stat.ameba.jp/user_images/20110123/17/tokotokosoftware/76/2a/p/t02200320_0400058211000834834.png?caw=800)
コードの方にはclickCreateButtonという名前で関数を作ってあげます。
![TokoTokoSoftware-createソース](https://stat.ameba.jp/user_images/20110123/17/tokotokosoftware/7d/b9/p/t02200132_0800048011000834832.png?caw=800)
ここではCREATE分を実行すると決めているので、データのチェックは行いません
また、エラーがあればエラーメッセージを表示、
なければ「成功」と表示するようにしてます
写すときはただ移すだけじゃなくて、前回説明した関数一覧・上のフロー・ソースコードをよく見比べて
どこで何をやってるか考えてみてくださいね。
そして、プロトタイプ宣言
![TokoTokoSoftware-create宣言](https://stat.ameba.jp/user_images/20110123/17/tokotokosoftware/12/fb/p/t02200062_0483013611000834831.png?caw=800)
IBの方で関数とクリックイベントの方を関連付けたら、実行してボタンをポチっと押してみます
すると・・・・・?
![TokoTokoSoftware-create結果(成功)](https://stat.ameba.jp/user_images/20110123/17/tokotokosoftware/3e/16/p/t02200110_0690034611000834830.png?caw=800)
チャンと成功って出てきましたね!
今回のSQLはCREATE文なので一度しかできません
なので、何度もボタンを押すとエラーが発生します
![TokoTokoSoftware-create何度も結果(失敗)](https://stat.ameba.jp/user_images/20110123/17/tokotokosoftware/27/e3/p/t02200110_0690034611000834843.png?caw=800)
エラーメッセージも前にターミナルでやったときと同じメッセージですね!
これで一応SQLの実行ができました!!
そこで、ちょっとコードの解説でもしてみましょうか
まずおおざっぱな流れですが、フローでも書いたように
①データベースファイルを開く
②SQLを入力
③SQLを実行
⑤SQL終了
⑥データベースファイルを閉じる
です。
今回はCREATE文なので④データの取得 は省略してます
で、だいたいはそのまんま1行ずつかいてあるのですが、ここで新しく加わっているのは
・データベースファイル名の取得
・エラー処理
の2点です。
データベースファイル名の取得ですが、
iPhoneではデータを保存できるところというのが決まっていて、
それのアドレスをとってきてあげる必要があります。
それに任意のファイル名(ここではdatabase.db)をつけて使います。
また、エラーが出たときのためにエラー処理を行ってます。
エラー処理と言ってもたいしたことはしてなくて、エラーメッセージを出してデータベースを閉じてるだけです。
このエラー処理をしないでエラーをほったらかしにしていると最悪プログラムが途中で落ちることもありますので、きちんと行ってあげてください。
ほかのところは多分フローや前回の関数解説を見ながらよく読めばわかると思うのでがんばって読んでください!!
1.5 ほかのSQLも書いてみる
さて、一度SQLを実行できたら後はもう簡単です。
CREATE文と同じソースでSQLだけを変えてあげればSELECT文以外は全部かけちゃいます!
ということでINSERT分を書いてみましょう。
またボタンを追加して、clickInsertButton関数をつくります
![TokoTokoSoftware-insertIB](https://stat.ameba.jp/user_images/20110123/18/tokotokosoftware/c1/1b/p/t02200320_0400058211000908014.png?caw=800)
![TokoTokoSoftware-insert宣言](https://stat.ameba.jp/user_images/20110123/18/tokotokosoftware/43/c6/p/t02200073_0470015511000908012.png?caw=800)
![TokoTokoSoftware-insertソースコード](https://stat.ameba.jp/user_images/20110123/18/tokotokosoftware/a1/6b/p/t02200135_0800049111000908013.png?caw=800)
今回のソースコードはほとんどCreateのときのコピペでいけちゃいそうですね
かえるのはSQLが書いてあるところぐらいです。
・・・・データベースファイル名とか変えたりしないでくださいね。
忘れずにInterfaceBuilderでイベントと関数を関連づけたら実行してみます
![TokoTokoSoftware-insert結果](https://stat.ameba.jp/user_images/20110123/18/tokotokosoftware/e4/cf/p/t02200110_0690034611000908027.png?caw=800)
insertは何度やってもエラーにならないので調子に乗って連打してみると?
![TokoTokoSoftware-insert何度も結果](https://stat.ameba.jp/user_images/20110123/18/tokotokosoftware/1a/c8/p/t02200110_0690034611000908016.png?caw=800)
大丈夫ですね!
というわけでSQL(SELECT以外)がこれでできるようになりました!!
SQL文のところをかえるだけで全部(SELECT以外)できちゃいます
長くなってきたので今回はここら辺で!
またあした更新します!!