【问题标题】:Connecting to MS Access 2007 using ODBC_CONNECT - error in driver?使用 ODBC_CONNECT 连接到 MS Access 2007 - 驱动程序出错?
【发布时间】:2011-01-14 10:14:56
【问题描述】:

我已成功查询 Microsoft Access 2003 数据库(.mdb 文件),现在我尝试对 Microsft Access 2007 执行相同操作。我尝试了以下方法:

if($type[1]=='accdb'){
    echo 'accdb';
    //2007 Microsoft Access 
    $connection = odbc_connect("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$mdbFilename;Persist Security Info=False;", $username, $password);

}else{
    echo 'mdb';
    //2000, 2003 Microsoft Access
    $connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$mdbFilename", $username, $password);

}

但是,对于 access 2007 数据库,我收到此错误:

Warning: odbc_connect() [function.odbc-connect]: SQL error: [Microsoft][ODBC Driver Manager] 
 Data source name not found and no default driver specified, SQL state IM002in SQLConnect 
in E:\export.php on line 38

【问题讨论】:

  • 这只是我的数据库的路径,它从 C:\Users\A\Documents\tester_07.accdb 更改为 C:\Users\A\Documents\tester.mdb。
  • 你是在问我的路径是否有空格。
  • ACE 是向后兼容的,因此没有理由将 Jet 4 用于较旧的数据(即 MDB),除非它真的旧的,例如 Jet 2。 x 或 3.x(ACE 可能能够处理 Jet 3.x——我不确定,也不想花时间重新注册 A2007)。

标签: php ms-access odbc driver


【解决方案1】:

如果有人想知道如何做到这一点。这对我有用。

try{
    $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=$mdbFilename", $username, $password);
}catch(PDOException $e){
    echo $e->getMessage();
}

【讨论】:

    【解决方案2】:

    IKIK 这是超级掘墓,但是..

    $dbh = new PDO("odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=" . $mdbFilename, $username, $password);
    

    这应该可行。

    【讨论】:

    • 为什么要发布与接受的答案相同的答案,并且代码比接受的答案更差?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2013-04-18
    相关资源
    最近更新 更多