2014-02-11 59 views
1

我已经安装了64位perl的64位操作系统。我已经从MS Access 2007中的表中检索数据(ms访问是32位)。我试图用一个错误来执行弹出的程序代码,它说64位perl是否包含所有32位perl模块?

DBI connect('Driver={Microsoft Access Driver (*.mdb,*.accdb)};DBQ=C:\test\INSTRUCTIONS.mdb','',...) failed: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at C:/test/connectaccess.pl line 7. 
cannot connect to DB at C:/test/connectaccess.pl line 7. 

的代码是

#!perl 
use strict; 
use warnings; 
use DBI; 
my $DBFile = q(C:\test\INSTRUCTIONS.mdb); 
my $dbh = DBI->connect("dbi:ODBC:Driver={Microsoft Access Driver (*.mdb)};DBQ=$DBFile",'','') or die("cannot connect to DB"); 
my $SQLquery = "SELECT * FROM IndemDate"; 
my $sth = $dbh->prepare($SQLquery); 
my $rc = $sth->execute; 
while (my $href = $sth->fetchrow_hashref) { 
print "memberID: " . $$href{"memberID"} . "\n"; 
print "memberName: " . $$href{"memberName"} . "\n"; 
print "\n"; 
} 

所以我在想,如果64位的perl包括所有的32个模块...或者是在连接到ms访问时出现任何错误。请指导我。

回答

0

您在这里没有使用任何与Access相关的模块。没有64/32位的问题。您正在使用属于您的操作系统的ODBC驱动程序,而不是Perl。为该文件设置一个系统ODBC数据源。一旦你有了这个设置你的代码应该采取的一般形式:如果我和32位的Perl执行程序

use strict; 
use warnings; 

use DBI; 

#open connection to Access database 
$dbh = DBI->connect('dbi:ODBC:ODBCNameGoesHere'); 
+0

但我已经提到'Driver = {Microsoft Access Driver(* .mdb)'在我的程序中...是不够的? – Programmer

+0

@编程器更改'死(“无法连接到DB”);'死'(“无法连接到DB:$!”);'找出它不工作的原因 –

+0

但我已经提到'Driver = { Microsoft Access Driver(* .mdb)'在我的程序中...是不够的? @ Dr.Avalanche – Programmer

相关问题