PERL串連ACCESS資料庫
前題是必須安裝好activeperl (505以上),以及MS Access 97
一. 安裝Win32-ODBC模組
步驟1:
從TOOLS欄目中下載Win32-ODBC.zip,下載完後用winzip解開到一個temp目錄,共有三個檔案:
Readme
Win32-ODBC.ppd
Win32-ODBC.tar.gz
步驟2:
在DOS視窗下,temp目錄中運行下面的DOS命令:
ppm install Win32-ODBC.ppd
二. 準備測試用資料庫(ACCESS)
步驟1:
啟動MS ACCESS,建立一個新空資料庫,命名為odbctest.mdb,儲存在某一目錄中(記住路徑)。
步驟2:
然後建立一個表,建立三個欄位:
欄位名稱 資料類型
Name 字元,長度50
Email 字元,長度50
Age 數字,長整型
將這個表儲存為address(注意這個例子中,沒有用自動增加的ID).輸入若干記錄:
Nighthawk nighthawk@163.net 20 1234567
John jt@163.net 24 0284393293
kit kit@21cn.com 18 3948932
儲存後,關閉資料庫檔案。
步驟3:
開啟控制台中的 ODBC資料來源(32位),在使用者DSN欄中,找到使用者資料來源列表,選中名稱為“MS Access 97 Database”的一行,然後按“配置”鍵。
在Database框中按"Select..",選擇步驟1.2中建立的資料庫檔案odbctest.mdb,按OK即可。ODBC設定中的其它項目全部採用預設設定,然後就是OK,確定,關閉交談視窗。
三. 這時候,資料庫已經可以用了,我們來測試一下:
#!/usr/bin/perl
use Win32::ODBC;
$DSN = "MS Access 97 Database";
$DBase = "access.mdb";
#串連資料庫
if (!($db = new Win32::ODBC($DSN))){
print "串連資料庫失敗./n";
exit();
}
else{
print "串連資料庫成功 (串連號:", $db->Connection(), ")/n/n";
}
#資料庫中的表
print "資料庫中的表:";
@tables = $db->TableList;
print @tables;
print "/n";
#選擇資料表
if (! $db->Sql("SELECT * FROM [address] WHERE age>=20") ){
@FieldNames = $db->FieldNames();
$Cols = $#FieldNames + 1;
#表中欄位數
print "表address欄位數:$Cols/n";
#欄位列表
for ($i = 0; $i < $Cols; $i++){
print "$FieldNames[$i]/t";
}
print "/n";
#列出年齡大於20的記錄
while($db->FetchRow()) {
@values = $db->Data();
print @values;
print "/n";
}
}
##### sql #########
#添加記錄
$sqlinsert = "INSERT INTO address VALUES ('Euler', 'euler/@21cn.com', 28, '021-345689')";
#更新記錄
$sqlupdate = "UPDATE address SET age = age+10 ";
#刪除記錄
$sqldelete = "DELETE FROM address WHERE name='jimtyan'";
$rc = $db->Sql($sqlinsert);
die qq(SQL 失敗 "$sqlinsert": ), $db->Error(), qq(/n) if $rc;
$rc = $db->Sql($sqlupdate);
die qq(SQL 失敗 "$sqlupdate": ), $db->Error(), qq(/n) if $rc;
$rc = $db->Sql($sqldelete);
die qq(SQL 失敗 "$sqldelete": ), $db->Error(), qq(/n) if $rc;
#關閉連結
$db->Close();