变量名约定
以下设置了比较常用的变量名命名方法:
$dsn 驱动程序对象的句柄
$dbh 一个数据库对象的句柄
$sth 一个语句或者一个查询对象的句柄
$h 通用的句柄 ($dbh, $sth, 或 $drh),依赖于上下文
$rc 操作代码返回的布什值(true 或 false)
$rv 操作代码返回的整数值
@ary 查询返回的一行值的数组(列表)
$rows 操作代码返回的行数值
$fh 文件句柄
undef NULL 值表示未定义
\%attr 引用属性的哈希值并传到方法上
数据库连接
#!/usr/bin/perl
use DBI;
use strict;
my $driver = "Pg";
my $database = "testdb";
my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432"; #这里要注意:;
my $userid = "admin";
my $password = "157359";
my $dbh = DBI->connect($dsn, $userid, $password) or die $DBI::errstr;
print "Opened database successfully\n";
DBI的API说明:
DBI->connect($data_source, "userid", "password", %attr)
建立数据库连接或会话,请求数据源。如果连接成功,则返回一个数据库句柄对象。
数据源的形式如 : DBI:Pg:dbname=$database;host=127.0.0.1;port=5432
PG是PostgreSQL驱动程序名称,testdb的数据库的名称。
在本机测试封装包的db_operate.pm:
#!/usr/bin/perl -w
use strict;
use DBI;
package sql;
sub execute {
my $host = "localhost";
my $driver = "Pg";
my $database = "library";
my $user = "admin";
my $passwd = "157359";
my $stmt = $_[0];
my $dsn = "DBI:$driver:dbname=$database;host=127.0.0.1;port=5432";;
my $dbh = DBI->connect($dsn,$user,$passwd) or die $DBI::errstr;
my $sth = $dbh->prepare($stmt);
$sth->execute();
my @array;
while ( my @row = $sth->fetchrow_array() ) {
push(@array,[@row]);
}
return @array;
$sth->finish();
$dbh->disconnect;
}
1;