標籤:dbi dbd
DBI:串連所有資料庫的API。
DBD:是DBI針對不同資料庫的驅動。
DBD::mysql
DBD::Pg
DBD::SQLite
如果沒有,使用cpan安裝即可。
######################################################################
DBI介面:
習慣用法:
$dbh資料庫控制代碼
$sth語句控制代碼
$drh驅動控制代碼
$rc布爾類型返回碼
$rv整數類型返回值
@ary從資料庫返回的行記錄的列表
$rows處理的行數
$fh檔案控制代碼
\%attr雜湊類型的屬性
@driver_names= DBI->available_drivers;
%dirvers= DBI->installed_drivers;
@data_sources= DBI->data_sources($driver_name, \%attr);
$dbh= DBI->connect($data_source, $username, $auth, \%attr);
###########################################################
use DBI;
#用connect建立串連返回控制代碼
$dsn= “DBI:mysql:database=$database;host=$hostname;port=$port”;
$dbh= DBI->connect($dsn, $username, $password, {RaiseError => 1,AutoCommit => 0});
#for select
$sth= $dbh->prepare(“SELECT foo,bar FROM user WHERE baz=?”);
$sth->execute($baz );
while( @row = $sth->fetchrow_array) {
print“@row\n”;
“@row\n”;
}
#for non-select(create,drop,alter,insert,delete)
$sth= $dbh->prepare(“INSERT INTO table(foo,bar,baz) VALUES(?,?,?)”);
while(<CSV>) {
chomp;
my($foo, $bar, $baz) = split /,/;
($foo, $bar, $baz) = split /,/;
$sth->execute($foo,$bar, $baz);
$bar, $baz);
}
$rows_affected= $dbh->do(“UPDATE your_table SET foo = foo + 1”);
$dbh->commit;
$dbh->rollback;
$sth->finish;
$dbh->disconnect;
具體API參考文檔。
perl: 資料庫編程