$dbh = DBI->connect(\"DBI:mysql:test:localhost\", \"\",\"\")
or die $DBI::errstr;
DBI->connect所用的3个参数是$database(数据库), $username(用户名),和d $password(口令)。这里我们使用昨天建立的一个试验数据库作为例子,我们无需指定用户名和口令,你可以使用字符串量DBI:mysql:test:localhost作为你的$database参数。但是这只是在本例中。如果你用别的数据库作别的事情,你需要参考DBI和DBD文献帮助你确定新的$database字符串。
下面,编写一些SQL代码,并将其放入变量。例如,在我昨天的例子中:
$SQL = <<\"EOT\"; select title, released from albums
where artist=\"Genesis\" order by released EOT
这个变量是用户端光标查询(cursor)的核心。光标查询 (cursor)是一种先进的SQL查询方法,它执行逐行查询功能。该查询功能实际上在同时全部执行,但我们的Perl查询只能一行一行地获得查询结果,所以它感觉上象是针对应用程序的光标。用户端光标查询的语句及执行代码如下:
my $dbh = DBI->connect(\"DBI:mysql:test:localhost\", \"\",\"\")
or die $DBI::errstr;
my $SQL = <<\"EOT\";
select title, released
from albums
where artist = \"Genesis\"
order by released
EOT
my $cursor = $dbh->prepare($SQL);
$cursor->execute;
//
<HTML>
<HEAD><TITLE>ePerl/DBI/HTML Integration
Example</TITLE></HEAD>
<BODY>
<P>
有关Genesis albums的数据库程序结果为 ...
<HR>
<TABLE BORDER>
<TR><TH COLSPAN=2>Albums by Genesis</TH></TR>
<TR><TH>Title</TH><TH>Release
Date</TH></TR>
my @columns;
while ( @columns = $cursor->fetchrow ) {
print ( \"<TR>\",( map { \"<TD>$_</TD>\" }
@columns ) , \"</TR>\\n\");
}
/
</TABLE>
<HR>
<P>
... and that\"s it!
</BODY>
</HTML>
$cursor->finish;
$dbh->disconnect;
//
你可以查看该程序执行的结果。
Albums by Genesis
Title Release Date
Selling England By The Pound 1973-01-01
Trespass 1974-01-01
A Trick of the Tale 1976-01-01
Wind & Wuthering 1976-01-01
Duke 1980-01-01
We Can\"t Dance 1990-01-01