ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

DBIプログラムサンプル集

 Perlで、DBIモジュールを使って、データベースをアクセスするサンプルプログラムです。 データベースは、PostgreSQLを使っています。

カーソルでデータを全件検索する方法

 カーソルを使って、SQL文の結果を1件ずつ処理するサンプルです。

#!/usr/local/bin/perl

use strict;
use DBI;

my ($dbh, $sth);
my ($data_source, $user_name, $sql);
my ($id, $name, $zip, $addr, $tel);

$data_source = 'dbi:Pg:dbname=addr';
$user_name = 'joe';
$dbh = DBI->connect($data_source, $user_name) || die $dbh->errstr;

$sql = 'select * from addr;';
$sth = $dbh->prepare($sql) || die $dbh->errstr;
$sth->execute() || die $sth->errstr;

while (($id, $name, $zip, $addr, $tel) = $sth->fetchrow_array()) {
  print "$id, $name, $zip, $addr, $tel\n";
}
die $sth->errstr if $sth->err;

$sth->finish();
$dbh->disconnect();

配列でデータを一括検索する方法

 selectallメソッドを使って、SQL文の結果を配列でまとめて処理するサンプルです。 SQL文の実行結果は、表として扱われるため、データは正規化されないので、SQLでは標準化されていません。 しかし、性能的に差が出るため、よく使われます。

#!/usr/local/bin/perl

use strict;
use DBI;

my ($dbh, $sth);
my ($data_source, $user_name, $sql);
my ($id, $name, $zip, $addr, $tel);
my ($ary, $num, $i);

$data_source = 'dbi:Pg:dbname=addr';
$user_name = 'joe';
$dbh = DBI->connect($data_source, $user_name) || die $dbh->errstr;

$sql = 'select * from addr;';
$ary = $dbh->selectall_arrayref($sql) || die $dbh->errstr;
$num = @$ary;
for ($i = 0; $i < $num; $i++) {
  print "$ary->[$i][0], $ary->[$i][1], $ary->[$i][2], ";
  print "$ary->[$i][3], $ary->[$i][4]\n";
}

$dbh->disconnect();


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp