DBIwrap.pm は、DBI/DBD を用いたデータベース処理を補助するモジュールです。
このモジュールは、CGI / mod_perl 環境どちらでも利用できます。
Perlのバージョンは5.005以降で利用できます。(5.6.1、5.8.xを含む)
ダウンロードはこちらから: dbiwrap.20041201.tar.gz GET
.tar.gz アーカイブ中の各ファイルをサーバにファイルをコピーするだけで利用できるため、 レンタルサーバ・ホスティングサーバなど、root 権限を使用できなかったり CPAN からのモジュールインストールのできない環境でも、 利用できます。
DBIwrap.pm は、 DBI.pm のサブクラスです。
use DBIwrap; $dbh = DBIwrap->connect( $DSN, $USER, $PASS, \%ATTR ); $value = $dbh->select_1st_value( $SQL1 ); $array = $dbh->select_1st_array( $SQL2 ); $hash = $dbh->select_1st_hash( $SQL3 ); $array = $dbh->select_all_value( $SQL4 ); $array = $dbh->select_all_array( $SQL5 ); $array = $dbh->select_all_hash( $SQL6 );
のように利用できる、検索系の独自メソッドが定義されています。
どのメソッドでも、検索結果が0レコードの場合は、undefが返ります。
select_1st_valueは、検索結果の第1レコード・第1カラムの値のみを返します。
標準DBIの(scalar呼び出し時の)selectrow_arrayメソッドに近い動作です。
以下の5メソッドとは異なり、このメソッドのみ返り値はリファレンスでなくスカラー値を返すため、
結果結果が0レコードの場合と、検索結果が NULL や ''(空文字列) の場合を
区別しづらい点には注意してください。
区別したい場合は、他のメソッドを使用してください。
select_1st_arrayは、検索結果の第1レコード・全カラムの値を、配列として返します。
標準DBIのselectrow_arrayrefメソッドに近い動作です。
select_1st_hashは、検索結果の第1レコード・全カラムの値を、ハッシュにして返します。
ハッシュのキーとなるカラム名は常に半角小文字になります。{NAME_lc}
標準DBIのselectrow_hashrefメソッドに近い動作です。
select_all_valueは、検索結果の全レコード・各第1カラムの値を、配列として返します。
標準DBIのselectcol_arrayrefメソッドに近い動作です。
select_all_arrayは、検索結果の全レコード・全カラムを、2次元配列として返します。
標準DBIのselectall_arrayrefメソッドに近い動作です。
select_all_hashは、検索結果の全レコード・全カラムを、ハッシュへの配列として返します。
ハッシュのキーとなるカラム名は常に半角小文字になります。{NAME_lc}
標準DBIのselectall_hashrefメソッドに近い動作です。
どれも標準DBIに同等処理を行うメソッドがありますが、書式が違ったり、 DBI.pm の古いバージョンに依ってはそれらのメソッドが未実装の場合もあるため、 DBIwrap.pm では統一されたインターフェースを提供します。 なお、メソッドごとに \%attr 属性指定は使用できません(常に空指定になります)が、 第2引数以降によりプレースホルダは利用できます。
DBIwrap のさらにサブクラス DBIwrap::delayでは、遅延接続機能を提供します。
使用方法は DBI->connect の行を DBIwrap::delay->connect と書き換えるだけです。
DBIwrap::delayはDBIwrap.pmに含まれるため、追加のuse文は不要です。
use DBIwrap; $dbh = DBIwrap::delay->connect( $DSN, $USER, $PASS, \%ATTR );
DBIwrap::delayではconnect 文の時点では実際にはDBサーバへの接続を行わずに、 最初に検索などの DBI メソッドが呼び出された場合に初めて、 DBサーバに接続します。 CGIなどで、条件によりDBサーバに接続しない場合もあるような際に利用できます。 無用なDB接続を回避してWWWサーバ・DBサーバへの負担を軽減します。
DBIwrap.pm モジュールのアップデート情報や、関連する話題など。
DBIwrap.pm の sql_where、sql_insert、sql_update メソッドと似た目的を持つ CPAN モジュールに、 SQL::Abstract (日本語POD) (英語POD) があるようです。(動作は未確認)
podでconnect呼び出しの行を誤って記述していたので修正しました。
トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/perl/dbiwrap/dbiwrap.html
Kawa.netxp © Copyright 2004-2006 Yusuke Kawasaki