Kawa.netxp データベース処理関係のモジュール - perl/cgi/mod_perl

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 モジュール POD

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 メソッド

select_1st_valueは、検索結果の第1レコード・第1カラムの値のみを返します。
標準DBIの(scalar呼び出し時の)selectrow_arrayメソッドに近い動作です。
以下の5メソッドとは異なり、このメソッドのみ返り値はリファレンスでなくスカラー値を返すため、 結果結果が0レコードの場合と、検索結果が NULL や ''(空文字列) の場合を 区別しづらい点には注意してください。
区別したい場合は、他のメソッドを使用してください。

select_1st_array メソッド

select_1st_arrayは、検索結果の第1レコード・全カラムの値を、配列として返します。
標準DBIのselectrow_arrayrefメソッドに近い動作です。

select_1st_hash メソッド

select_1st_hashは、検索結果の第1レコード・全カラムの値を、ハッシュにして返します。
ハッシュのキーとなるカラム名は常に半角小文字になります。{NAME_lc}
標準DBIのselectrow_hashrefメソッドに近い動作です。

select_all_value メソッド

select_all_valueは、検索結果の全レコード・各第1カラムの値を、配列として返します。
標準DBIのselectcol_arrayrefメソッドに近い動作です。

select_all_array メソッド

select_all_arrayは、検索結果の全レコード・全カラムを、2次元配列として返します。
標準DBIのselectall_arrayrefメソッドに近い動作です。

select_all_hash メソッド

select_all_hashは、検索結果の全レコード・全カラムを、ハッシュへの配列として返します。 ハッシュのキーとなるカラム名は常に半角小文字になります。{NAME_lc}
標準DBIのselectall_hashrefメソッドに近い動作です。

どれも標準DBIに同等処理を行うメソッドがありますが、書式が違ったり、 DBI.pm の古いバージョンに依ってはそれらのメソッドが未実装の場合もあるため、 DBIwrap.pm では統一されたインターフェースを提供します。 なお、メソッドごとに \%attr 属性指定は使用できません(常に空指定になります)が、 第2引数以降によりプレースホルダは利用できます。

DBIwrap::delay クラス

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 モジュールのアップデート情報や、関連する話題など。

2005/03/07

DBIwrap.pm の sql_where、sql_insert、sql_update メソッドと似た目的を持つ CPAN モジュールに、 SQL::Abstract (日本語POD) (英語POD) があるようです。(動作は未確認)

2004/11/30

podでconnect呼び出しの行を誤って記述していたので修正しました。

コメントはこちらへ by AjaxCom

その他のページへのリンク

このページへのトラックバック by AjaxTB

トラックバックURL:http://www.kawa.net/service/tb/ajaxtb.cgi/works/perl/dbiwrap/dbiwrap.html

Kawa.netxp © Copyright 2004-2006 Yusuke Kawasaki