dbi(database inte***ce)是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 = "";
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;
如果在 sql 執行過程中發生錯誤,可以回滾資料,不做任何改變:
$dbh->rollback or die $dbh->errstr;
和其它的語言一樣, perl dbi對資料庫的操作也支援事務處理, 它的實現方式有兩個:
$dbh = dbi->connect($dsn, $userid, $password, ) or die $dbi::errstr;
以上**在連線的時候設定了autocommit為false, 也就是說當你對資料庫進行更新操作的時候, 它不會自動地把那些更新直接寫到資料庫裡, 而是要程式通過 $dbh->commit 來使資料真正地寫到資料庫裡, 或 $dbh->rollback 來回滾剛才的操作。
這種方式就不需要在連線資料庫的時候設定 autocommit = 0 。
可以一次資料庫連線進行多次事務操作, 不用每一次事務的開始都去連線一次資料庫。
$rc = $dbh->begin_work or die $dbh->errstr;
#####################
##這裡執行一些 sql 操作
#####################
$dbh->commit; # 成功後操作
-----------------------------
$dbh->rollback; # 失敗後回滾
如果我們需要斷開資料庫連線,可以使用 disconnect api:
$rc = $dbh->disconnect or warn $dbh->errstr;
連線資料庫操作
有一段時間沒有寫部落格了,今天我來說說資料庫的連線操作。首先我都知道ado.net這門技術,其實我自己之前也學過幾次,但只學了一點皮毛,跟著老師走也看得懂,但是自己就不會敲出來,前段時間我又在學習這個,也覺得自己這次應該是真的學懂了吧!我們就以mssqlserver為例來講解資料庫連線操作,首先我們...
python 連線資料庫SQL並進行操作
import pymysql conn pymysql.connect host rm rdsyuncs.com 位址 user train rs passwd trs123 密碼 db train recommended sys 這個是資料庫裡面你想要操作的資料庫名稱 charset utf8 使...
VC ADO連線資料庫操作
vc ado連線資料庫操作 收藏 1 引入ado類 import c program files common files system ado msado15.dll no namespace rename eof adoeof 2 初始化com 在mfc中可以用afxoleinit 非mfc環境...