2014-04-23 47 views
0

我正嘗試使用perl連接到訪問2007數據庫。下面是我嘗試執行無法使用perl連接到.accdb文件

use DBI; 

$path='T:\a\abc.accdb'; 
$datasource = "driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=$path"; 
$dbh = DBI->connect("dbi:ODBC:$datasource", '', '') || die "Error connecting: $!"; 
$query="select name from receiver"; 
$exe=$dbh->prepare($query) or die "cannot prepare"; 
$exe->execute or die "cannot execute"; 

$a=$exe->fetchall_arrayref(); 
foreach $aa(@{$a}) 
{ 
print @$aa; 
} 

的代碼,但執行與下面的錯誤

DBI connect('driver={Microsoft Access Driver(*.mdb,*.accdb)};DBQ=T:\a\abc.accdb','',...)failed: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at test.pl line 5. Error connecting: at test.pl line 5.

失敗,有人可以請指導我如何解決這個問題。

+0

的可能重複[我如何連接到使用Perl的MS Access數據庫?( http://stackoverflow.com/questions/1651585/how-do-i-connect-to-an-ms-access-database-using-perl) – Borodin

+0

@Borodin如果我這樣做我得到一個錯誤在執行不能執行在test.pl 23行。 – Programmer

回答

1

您的驅動程序名稱缺少空格。 ODBC對此非常挑剔。嘗試

$datasource = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=$path"; 

此外,NAME是在訪問SQL的保留字,所以你可能需要使用

$query="select [name] from receiver"; 
+0

謝謝你如此多:) – Programmer

0

我與DBI經驗:ODBC是有些過時,但我會建議如下:

  • 檢查ODBC數據源設置的驅動程序名稱,並確保 ,你必須拼寫正確。 (空格和所有) - 也許設立了 DSN並使用它 - 更可靠
  • 檢查文件是否存在(我不認爲這是從 錯誤消息的問題)
  • 資本的驅動程序/ Dbq(不太可能,但我們正在處理 MS)
+0

都很好..不能創建一個單獨的DSN,因爲我必須在許多其他數據庫上做同樣的事情 – Programmer

+0

報告文件爲'T:a \'的錯誤信息,您輸入了'T:\ a \'是很好奇的。 – albe

+0

這是一個錯字.. – Programmer

相關問題