use Win32::ODBC;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft ActiveX Data Objects';
my $Conn = Win32::OLE->new('ADODB.Connection'); # creates a connection object
$cnnstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\altigen\Project\TrunkFilter\TrunkFilter\db.mdb;Persist Security Info=False";
$Conn->Open("DSN=telbook;UID=;PWD=;DBNAME=db.mdb");# opens the database connection
if (Win32::OLE->LastError()){
print "Error\n";
}
for($i = "82513113"; $i < "82600000"; $i ++)
{
$sql = "INSERT INTO telbook(telnum, status) VALUES('$i', 'Not check')";
my $rc = $Conn->Execute("$sql");
if (Win32::OLE->LastError()){
print "Error\n";
last;
}
}
$Conn->Close;
前題是必須安裝好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 [email protected] 20 1234567
John [email protected] 24 0284393293
kit [email protected] 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(), ")nn";
}
#資料庫中的表
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字段數:$Colsn";
#字段清單
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', '[email protected]', 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();