DBIモジュール
アセンブラの魔女 ⧫ Perl ⧫ モジュール ⧫ DBIモジュール
アセンブラの魔女 ⧫ Perl ⧫ モジュール ⧫ DBIモジュール

 DBIモジュールはPerlからデータベースにアクセスできるようにするための、データベースインターフェースで、特定のデータベースに依存しない部分をサポートします。

connect(データベースへの接続)
disconnect(データベースの切断)
prepare(実行のためのステートメントの準備)
execute(ステートメントの実行)
rows(直前のステートメントの影響を受けた行数を調べる)
fetchrow_array(ステートメントの結果から次の行を取り出す)

 データベースに接続してデータベースへのハンドルを返します。返されたデータベースへのハンドルはその後のデータベース操作で使います。

$dbh = DBI->connect( data_source, username, password )

 次はMySQL接続の例です。

$db = DBI->connect( 'DBI:mysql:books:localhost', $user, $passwd);

 usernameとpasswordは、それぞれデータベースに接続するために必要なユーザー名とパスワードです。data_sourceには、接続先データベースを次のような書式で指定します(わかりにくいので上記のMySQLへの接続の例が参考になるかもしれません)。

dbi:DriverName:database_name
dbi:DriverName:database_name@hostname:port
dbi:DriverName:database=database_name;host=hostname;port=port

 connectメソッドで返されたデータベースハンドルをデータベースから切断します。

$dbh->disconnect;

 ステートメント(MySQLのクエリに相当する概念)は直ちに実行されるのではなく、「ステートメントの準備」という段階を経てその後の段階で実行されます。prepareメソッドは実行のための1つのステートメントを準備し、ステートメントハンドルオブジェクトを返します。

$sth = $dbh->prepare( $statement );

 以下はMySQLでbookstblというテーブルの全レコードを取得するクエリを実行する際のステートメント準備の例です。

$sth = $db->prepare( "select * from bookstbl" );

 prepareメソッドで返されたステートメントハンドルオブジェクトを使って、すでに準備されているステートメントを実行します。

$sth->execute;

 直前のステートメントの影響を受けた行数を調べるにはステートメントハンドルオブジェクトのrowsメソッドを使います。このメソッドは行を返せない場合や不明な場合に-1を返します。

$rv = $sth->rows;

 以下はMySQLでテーブルbookstblの行数を表示する例です。

$sth = $db->prepare("select * from bookstbl");
$sth->execute;
$num_rows = $sth->rows;
print "行数 = $num_rows\n";

 ステートメントを実行した後、ステートメントの結果の行を取り出すにはステートメントハンドルオブジェクトのfetchrow_arrayメソッドを使います。 このメソッドは結果から1行取り出しそれを配列で返し、次の行に行を進めます。これ以上、行が無い場合、このメソッドはundefを返します。エラーが発生した場合にも、undefが返されますが、それを使ってエラーを判断すべきではありません。エラーの判断には$sth->err、またはRaiseErrorを使います。

@ary = $sth->fetchrow_array;

 以下はMySQLでテーブルbookstblのすべての行を表示する例です。

$sth = $db->prepare( "select * from bookstbl" );
$sth->execute;

$num_rows = $sth->rows;
print "該当 $num_rows 件\n";
for ( $i=0; $i< $num_rows; $i++ ) {
  @a = $sth->fetchrow_array;
  print "ID = $a[0], 書名 = $a[1] 著者 = $a[2] \n";
}
▼ Property
記事情報
datePublished2011-01-01
dateModified2018-07-25
authorアセンブラの魔女
headlinePerlのDBIモジュールついての記事です
keywordsDBIモジュール
keywordsデータベースへ接続
keywordsconnect
keywordsデータベース切断
keywordsdisconnect
keywordsprepare
keywords実行
keywordsexecute
keywordsrows
keywordsfetchrow_array
publisher name= wiredFish, logo.name= wiredFish, logo.url= https://books-nekoya.jp/Programming/chigu-hagu-title-01.png size= 208 pixel x 50 pixel
image.url url= https://books-nekoya.jp/Programming/chigu-hagu-title-01.png , size= 208 pixel x 50 pixel