[PR]
2024年11月21日
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
データベースのオープンと検索の概要
2008年11月20日
SQLite3データベースの開き方はアップル提供のサンプルSQLite Book Listが参考になります。AppDelegate.mにあるcreateEditableCopyOfDatabaseIfNeededをそのまま再利用することができます。ファイル名を自分がリソースとして加えたデータベースファイルのものに変更するだけです。これでまずデータベースファイルが必ず存在する状態(発見できなければ作成する)にします。
実際にデータベースを開いてSQL文でデータを取り出す操作はinitializeDatabaseが参考になります。基本的な流れとしては、まずファイルをsqlite3_open関数で開いたあと、SQL文を作り、それを準備用の関数に渡します。文の中に変数(”?”と表記した部分)がある場合は、そこの部分に実際の変数を埋め込みます。そして実際に検索を行います。データベースに検索条件に一致するデータがあった場合には、それを順番に読み出します。データの読み出しが終わったらSQL文をデータベースから解放します。
データベースファイルを最終的に閉じる方法はapplicationWillTerminateにあるように、sqlite3_close関数を実行します。ファイルを開いたときと閉じたとき、問題が無い場合はSQLITE_OKが返ってきます。
2008.12.8追記
SQLite Book ListのcreateEditableCopyOfDatabaseIfNeededでやっているのは、ユーザーのデータ用フォルダにファイルが無い場合にリソースのSQLファイルをコピーする動作でした。初回の起動時に行われるだけで、既にユーザーデータがある場合はコピーをしません。そのため、バージョンアップを行ってもユーザーが作ったデータにサンプルデータを上書きしてしまう、というような事態は避けられるようになっています。
実際にデータベースを開いてSQL文でデータを取り出す操作はinitializeDatabaseが参考になります。基本的な流れとしては、まずファイルをsqlite3_open関数で開いたあと、SQL文を作り、それを準備用の関数に渡します。文の中に変数(”?”と表記した部分)がある場合は、そこの部分に実際の変数を埋め込みます。そして実際に検索を行います。データベースに検索条件に一致するデータがあった場合には、それを順番に読み出します。データの読み出しが終わったらSQL文をデータベースから解放します。
データベースファイルを最終的に閉じる方法はapplicationWillTerminateにあるように、sqlite3_close関数を実行します。ファイルを開いたときと閉じたとき、問題が無い場合はSQLITE_OKが返ってきます。
2008.12.8追記
SQLite Book ListのcreateEditableCopyOfDatabaseIfNeededでやっているのは、ユーザーのデータ用フォルダにファイルが無い場合にリソースのSQLファイルをコピーする動作でした。初回の起動時に行われるだけで、既にユーザーデータがある場合はコピーをしません。そのため、バージョンアップを行ってもユーザーが作ったデータにサンプルデータを上書きしてしまう、というような事態は避けられるようになっています。
PR
Comment