无法使用perl连接到.accdb文件

时间:2014-04-23 13:11:24

标签: perl ms-access-2007

我正在尝试使用perl连接到访问2007数据库。下面是我尝试执行的代码

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.

有人可以指导我如何解决这个问题。

2 个答案:

答案 0 :(得分:1)

您的驱动程序名称缺少空格。 ODBC对此非常挑剔。尝试

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

此外,NAME是Access SQL中的保留字,因此您可能需要使用

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

答案 1 :(得分:0)

我对DBI的经验:ODBC有些过时,但我建议如下:

  • 检查ODBC数据源设置中的驱动程序名称并确保 你有正确的拼写。 (空间和所有) - 也许设置一个 DSN并使用它 - 更可靠
  • 检查文件是否存在(我不认为这是问题所在 错误信息)
  • Driver / Dbq上的资本化(不太可能,但我们正在处理 MS)