64位perl是否包含所有32位perl模块?

时间:2014-02-11 09:33:11

标签: perl ms-access-2007

我有64位操作系统,我已经安装了64位perl。我被赋予了从MS Access 2007中的表中检索数据的任务(ms访问为32位)。我尝试执行的程序代码会弹出一个错误,上面写着

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访问连接中是否有任何错误。请指导我。

2 个答案:

答案 0 :(得分:1)

如果用32位perl执行程序,程序运行正常。

答案 1 :(得分:0)

您在此处未使用任何与Access相关的模块。没有64/32位问题。您正在使用ODBC驱动程序,它是您的操作系统的一部分,而不是Perl。为该文件设置系统ODBC数据源。完成此设置后,您的代码应采用一般形式:

use strict;
use warnings;

use DBI;

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