My Winding Road

思ったことをもにょもにょと書きます。

まじめにObjective-CのFMDBの使い方でも書いてみる

たまにはこういうのも書くんだよ。

Objective-CでDBを使う場合、色々と方法があるそうですが、
FMDBを使う場合の導入方法を書いておきます。

まず、DBを作りましょう。

ネットで検索するとコマンドラインを使うとか出てくるけど、
こいつを使えばOK。


Lita - SQLite Administration Tool | David Deraedt

ちょちょいとDBを作って、プロジェクトに取り込みます。





そうしたらここからFMDatabase関連をまるごと持ってきてください。

ccgus/fmdb · GitHub

srcの中に入っているのがプログラム本体なので、
それを適当に入れてください。

もしFinderからドラッグ&ドロップしただけだと、
ファイルがコンパイル対象にならないので注意してください。

こんなエラーが出ます。
"_OBJC_CLASS_$_FMDatabase", referenced from:

よくハマるので注意してください。



これが入ったら、DTOとDAOを作りましょう。
※他に良いデータ整理のモデルがあればぜひ教えて下さい。

DTOとはData Transfer Objectだそうです。
DAOとはData Access Objectだそうです。


具体的には、

DTO・・・
 テーブルの構造をそのまんまクラスに書きます。
 1カラム目はintで、2カラム目はNSStringで・・・みたいに。
 1テーブル1DTOでOKだと思います。

DAO・・・
 実際にデータベースにアクセスするためのSQLを書きます。
 これも1テーブルにつき1DAOでいいと思います。
 CRUD(Create、Read、Update、Delete)すべて書いておいて自分のフォーマットを作っておくとよいでしょう。


コントローラーからの使い方としては、
DTOインスタンスを作る
 →ここにSQLの結果が入る
 ▼
DAOのインスタンスを作り、メソッドにを使いSQLを実行。
 ▼
実行したSQLの戻りをDTOインスタンスに入れる。
 ▼
DTOからデータを取り出す。

とまぁこんな感じです。


1テーブルにDTOとDAOをそれぞれ作らないといけないから、
ちょっと力技が発生しますね。

自動生成ツールでもあれば重宝するかも。
もしくは若手に勉強のためとか言いながらやらせるのも・・・ゲフンゲフン



サンプルコードも書こうと思ったけど、
疲れたのでまた次回にします。


続く!!