使用环境:linux OpenSUSE
1)检查安装环境
?? (1) 查找DBI:zypper search DBI
????????????? 安装DBI:zypper search perl-DBI
?? (2) 查找DBD Pg:zypper search DBD
???????????? 安装DBD Pg:zypper install perl-DBD-Pg
2)?? 编写perl脚本:
#! /usr/bin/perl
use strict;
use Data::Dumper;??????????? --用于select返回数据集?
use DBI;
my $driver="Pg";
my $database_name = "xxxx";
my $host = "localhost";??? --"IP adrress"
my $port= "5432";
my $database ="dbi:$driver:dbname=$database_name;host=$host;port=$port";?? -- 构造
my $db_user = "postgres";??????? --用户名??
my $db_passwd = "postgres";?? --密码
## 连接.
#my $dbh=DBI->connect("dbi:$driver:dbname=$database_name;host=$host;port=$port",$db_user,$db_passwd,{ RaiseError => 1,AutoCommit => 0 }) or die $DBI::errstr;???? --如果不构造前面的database,可以使用这句直接连接数据库。其中AutoCommit表示是否自动提交
my $dbh=DBI->connect($database,$db_passwd) or die "can''t connect!";??? -- 使用构造的database来连接数据库,AutoCommit默认为1
if ($dbh)
{????????? print "pgconnect ok! n";
?????????? print "my $dbh->port(); n";
}else{
??????????print "pgconnect false! n";
?????????? print "my $dbh->port(); n";
}
my $sth = $dbh->prepare("select * from student " )or die "Syntax error:$!n";?? -- 查询
$sth->execute();?????????? --执行
while(my $row=$sth->fetchrow_hashref())? --获取select的结果集
{
??? print Dumper($row);
}
my $sth = $dbh->prepare("insert into student values(3,'zhang','m') " )or die "Syntax error:$!n"; --插入数据
$sth->execute();
my $sth = $dbh->prepare(qq{delete from student where id = 3})or die "Syntax error:$!n";?? --删除数据 $sth->execute(); $dbh->disconnect();??? --关闭数据库