6部 データベース・インタフェイス

DBI 概要

DBI の概要

プログラムにCC++JavaPerlなどの種類があるように、データベースにもオラクルやSQLサーバ、MySQLなどの種類があります。Perlやそのほかのプログラミング言語には、これらの組み合わせひとつひとつに独自の通信機能を実装する代わりに、『DBI(データベース・インタフェイス)』という共通の通信手段を提供しています。

DBIプログラミング言語からデータベースにアクセスするための『API(アプリケーション・プログラム・インターフェース)で、データベースにアクセスするための手段と、データベースの種類に依存しないインターフェイスを提供します。データベースの種類に依存しないということは、どのデータベースも同じ方法で操作することができるということです。MySQL、オラクル、インフォミックス、あるいは他のどんなデータベースに接続するときも、DBMSの基本構造を知る必要はありません。DBIによって定義されているAPIだけをマスターすればよいのです。

次の図は、プログラミング言語からAPIを通じて、MySQLやオラクルなどのデータベースに接続するまでの流れを表しています。

図にあるように、プログラムからアクセスするのはAPIだけです。MySQLやオラクルなどのDBMSに直接命令する役目は、そのアプリケーション用のドライバが請け負っています。このようにAPIを通じてのデータベース操作は、APIだけをマスターすればよいという制作上の利点に加え、データベースのバージョンアップや、データベース自体の変更でさえ手間を掛けることなく実現することができるという運営上の利点もあります。

PAGE TOP


表記と規約

DBI  静的トップレベルのクラス名
$dbh データベースハンドルオブジェクト
$sth ステートメントハンドルオブジェクト
$drh ドライバハンドルオブジェクト
$h 上記のハンドルのいずれか
$rc 一般的な返りコード (ブール:
真=成功、偽=エラー)
$rv 一般的な返り値 (典型的に整数)
@ary データベースから返される値のリスト。通常はデータの行
$rows 処理された行の数 (なければ-1)
$fh ファイルハンドル
undef  Perl では NULL は未定義(
undef )
\%attr メソッドに渡される属性値のハッシュのリファレンス

PAGE TOP


一般的なインタフェース規則と注意

セッション

DBIは、セッションの概念を持っていません。すべてのセッションはconnectメソッドから返されるハンドル・オブジェクト($dbh)を持ち、このハンドル・オブジェクトは、データベースに関連するメソッドを起動するために使用されます。

文字列と数値

ほとんどのデータは文字列としてPerlスクリプトに返されます(NULL値はundefとして返される)。これにより数値データの精度を落とすことなく扱うことができます。文字列が数として使用される場合、Perlは同じ精度を保てない可能性があります。

日付と時間

日付と時間は、対応するデータベースエンジンの書式で返されます。

バイナリデータのサポート

Perlスクリプトは文字列のなかにあるバイナリデータをサポートします。DBIはバイナリデータを変更することなく、ドライバとやりとりします。バイナリデータの扱いはドライバの実装方法に依存します。

SQLステートメント

複数のSQLステートメントを単一のステートメント・ハンドル($sth)中で組み合わせることはできません。

関連記事