代码之家  ›  专栏  ›  技术社区  ›  Dreamer64

如何从delphi XE2访问Microsoft access 2013数据库?

  •  1
  • Dreamer64  · 技术社区  · 11 年前

    我想知道如何从Delphi XE 2连接到MS Access 2013数据库?我通常在MS Access 2010中使用“Provider=Microsoft.ACE.OLEDB.12.0”,但它在2013中已经不起作用了?知道吗??

    1 回复  |  直到 11 年前
        1
  •  1
  •   Gord Thompson    11 年前

    我刚刚在带有64位Access_2013的Windows_7机器上测试了以下VBScript代码。。。

    Option Explicit
    Dim con, rst
    Set con = CreateObject("ADODB.Connection")
    con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=C:\Users\Gord\Desktop\Database1.accdb;"
    Set rst = CreateObject("ADODB.Recordset")
    rst.Open "SELECT Field1 FROM Table1", con
    Wscript.Echo rst("Field1").Value
    rst.Close
    Set rst = Nothing
    con.Close
    Set con = Nothing
    Wscript.Echo "Done."
    

    …而且效果很好,所以我不相信 Provider= 你引用的字符串就是问题所在 本身 。您的设置肯定有其他问题。

    编辑

    比较两台Windows_7计算机,一台与64位Office_2010,另一台与64bit Office_2013,发现了一个重要的差异:

    • 装有64位Office_2010的计算机同时安装了32位和64位版本的Access数据库引擎(ACE)。

    • 装有64位Office_2013的机器 只有 ACE的64位版本。32位版本的ACE不存在。

    重新运行我的VBScript测试证实了这一点:

    C:\__tmp>c:\windows\system32\cscript.exe /nologo oledbTest.vbs
    Hello
    Done.
    
    C:\__tmp>c:\windows\sysWOW64\cscript.exe /nologo oledbTest.vbs
    C:\__tmp\oledbTest.vbs(4, 1) ADODB.Connection: Provider cannot be found. It may not be properly installed.
    

    幸运的是,64位Office_2013的用户可以从下载并安装32位版本的ACE here 如果他们有32位的应用程序需要使用.accdb文件。

    对于64位Windows上32位Office_2013的用户,我怀疑情况与32位Officex2010的用户相同:他们只有32位版本的ACE,除非先卸载32位Office,否则无法安装64位版本。所以,如果你安装了32位Office,并且你想运行一个需要处理.accdb文件的64位应用程序,那么我相信你“运气不好”。(遗憾的是,我无法对此进行测试,因为我只能安装64位Office_2013。)