perl数据库连接工具 DIB
环境搭建
DBI(Database Interface)是perl连接数据库的接口。其是perl连接数据库的最优秀方法,他支持包括Orcal,Sybase,mysql,db2等绝大多数的数据库
perl 环境 : yum install perl-Devel
DBI连接mysql : yum -y install perl-DBD-MySQL
或者单独装DBI、Data-ShowTable、DBD-mysql 三个组件
连接方法
#!/usr/bin/perl -W
use utf8;
use strict;
use DBI;
my $host = ""; # 主机地址
my $driver = "mysql"; # 接口类型 默认为 localhost
my $port = "";
my $database = ""; # 数据库
my $dsn = "DBI:$driver:database=$database:$host:$port" or die "can't connect to database ". $DBI::errstr;
my $userid = ""; # 数据库用户名
my $password = ""; # 数据库密码
my $dbh = DBI->connect($dsn, $userid, $password );
my $sth = $dbh->prepare("SELECT * FROM Websites"); # 预处理 SQL 语句
$sth->execute(); # 执行 SQL 操作
$sth->finish();
$dbh->commit or die $DBI::errstr;
插入
my $name = "Twitter";
my $url = "https://twitter.com/";
my $alexa = 10;
my $conutry = "USA";
my $sth = $dbh->prepare("INSERT INTO Websites
(name, url, alexa, conutry )
values
(?,?,?,?)");
$sth->execute($name,$url,$alexa, $conutry)
or die $DBI::errstr;
$sth->finish();
$dbh->commit or die $DBI::errstr;
ROLLBACK 操作
如果在 SQL 执行过程中发生错误,可以回滚数据,不做任何改变:
$dbh->rollback or die $dbh->errstr;
事务
和其它的语言一样, perl DBI对数据库的操作也支持事务处理, 它的实现方式有两个:
1、 在连接数据库的时候就开始一个事务
$dbh = DBI->connect($dsn, $userid, $password, {AutoCommit => 0}) or die $DBI::errstr;
以上代码在连接的时候设置了AutoCommit为false, 也就是说当你对数据库进行更新操作的时候, 它不会自动地把那些更新直接写到数据库里, 而是要程序通过 $dbh->commit 来使数据真正地写到数据库里, 或 $dbh->rollback 来回滚刚才的操作。
2、 通过$dbh->begin_work()语句来开始一个事务
这种方式就不需要在连接数据库的时候设置 AutoCommit = 0 。
可以一次数据库连接进行多次事务操作, 不用每一次事务的开始都去连接一次数据库。
$rc = $dbh->begin_work or die $dbh->errstr;
#####################
##这里执行一些 SQL 操作
#####################
$dbh->commit; # 成功后操作
-----------------------------
$dbh->rollback; # 失败后回滚
断开数据库连接
如果我们需要断开数据库连接,可以使用 disconnect API:
$rc = $dbh->disconnect or warn $dbh->errstr;