TOP書籍連動> ユーティリティメソッド
SQLiteの高度な活用術
SQLiteの高度な活用術

第5回:ユーティリティメソッドの注意点

著者:Peter Lavin   2006/4/25
1   2  次のページ
ユーティリティメソッド

   SQLiteDatabaseクラスのSQLを実行するすべてのメソッドをオーバーライドすることで、クエリの実行に失敗した時は例外を投げるようになりました。そのため、クエリを実行して返される値のチェックをする必要はありません。

   今回紹介するクラスの残りのメソッドはフォームからポストされたデータをチェックする目的のユーティリティメソッドです。これらのメソッドではSQLiteデータベースのメタデータを取得する方法を紹介します。

   メタデータを利用するのはsetTableNames()メソッドとgetFieldNames()メソッドで す。リスト4のコードを見てください。

        リスト4(再掲)

(画像をクリックすると別ウィンドウに拡大表示します)

   まずsetTableNames()メソッドはsqlite_masterテーブルを利用しています。このテーブルはデータベースのスキーマを定義しているものです。sqlite_masterテーブルにクエリを発行することで、データベース内のすべてのテーブルとビューを取得することができます。typeフィールドにリソースの種類が定義してあり、今回の場合はtable もしくはviewとなっているものを検索します。

   このメソッドですべてのテーブルとビューの名前を取得し、配列として保存します。このメソッドはコンストラクタを呼び出す時に本来であれば実行したいところですが、SQLiteDatabaseのコンストラクタはfinalとなっているのでオーバーライドすることができません。

   getFieldNames()メソッドで利用されているPRAGMAはSQLiteの色々な関数を実行することができます。その関数の中には、インデックスや外部キーなどのデータベーススキーマの情報を取得するものもあります。

   table_infoをPRAGMAで実行するとカラム名とデータ型を含んだ結果セットを取得できます。データ型はテーブル作成時に指定されたものです。すべてのフィールドのデータ型は文字列なので意味がないと思うかもしれませんが、この情報はデータのチェックに使用することができます。

   このデータ型を使用することで、プログラム側でそれぞれのフィールドが許可するデータを定義することができます。このtable_infoはビューに対しても使用することができますが、ビューに対して使用する場合はすべてのデータ型はnumericとなります。

   PRAGMAに関しては、未定義のプラグマが発行されてもエラーメッセージは表示されないということと、SQLiteの将来のバージョンとの互換性が保証されていないので注意が必要です。

1   2  次のページ

PHPプログラマーズマガジン 書籍紹介
PHPプログラマーズマガジン

PHPプログラマーズマガジンは、PDF形式で読者の方にお届けするPHP言語(PHP: Hypertext Processor)専門誌です。 カナダMTA出版のphp|architect誌を日本語に翻訳し、独自の記事を加えて月刊でお届けしています。

発行:アシアル株式会社  価格:1,029円

 ご購入はこちら
http://www.asial.co.jp/magazine/
Peter Lavin
著者プロフィール
Peter Lavin
カナダ、トロントでWebデザイナ/Web開発者として働いています。現在、PHPのオブジェクト指向をテーマにした本を執筆しており、No Starch Press社より出版される予定です。


INDEX
第5回:ユーティリティメソッドの注意点
ユーティリティメソッド
  メタデータの利用