我正在使用Visual Studio 2012创建一个Web应用程序,该应用程序连接到Access 2013数据库,编程行如下:
string connectionString = "provider=Microsoft.ACE.OLEDB.12.0;" + "data source=" + Page.Server.MapPath("App_Data\db1.accdb");
但是由于错误
导致启动失败Microsoft.ACE.OLEDB.12.0在本地机器中找不到
Microsoft Access 2013的正确连接字符串是什么?
作为web服务器的机器必须安装"Microsoft Access Database Engine 2010"。如果那台机器上没有安装Access,那么你可以在这里下载引擎的安装程序。
注意64位安装程序只包含64位版本;它不包括32位版本(在同一页面上单独提供)。
编辑…
至于连接字符串,我刚刚在Access_2013机器上测试了以下VBScript,它工作得很好。
Option Explicit
Dim con, rst
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:UsersGordDesktopDatabase1.accdb;Persist Security Info=False;"
Set rst = CreateObject("ADODB.Recordset")
rst.Open "SELECT Col1 FROM Table1", con
Wscript.Echo rst(0).Value
rst.Close
Set rst = Nothing
con.Close
Set con = nothing
我从connectionstrings.com复制了连接字符串。
编辑…
如果您可以访问web服务器,您可以检查以下两个文件的存在:
C:Program FilesCommon FilesMicrosoft SharedOFFICE14ACEOLEDB.DLL
C:Program Files (x86)Common FilesMicrosoft SharedOFFICE14ACEOLEDB.DLL
在64位机器上,第一个文件表示安装了64位版本的Access Database Engine。在32位机器上,表示安装了32位版本。
如果第二个(x86)文件存在,那么您就知道在64位机器上存在32位版本的Access Database Engine。
edit re: final comment
这个问题确实与Access数据库引擎的"位"有关:
我安装了"Microsoft Access Database Engine 2010"64位,我应该安装32位,因为我的visual studio是32位,谢谢你的建议
这取决于你安装的办公室,如果你有x64位的办公室,那么你必须将应用程序编译为x64才能运行,所以如果你想让它在x36上运行,那么你必须安装office x86来接受,我尝试了上面所有的解决方案,但没有一个工作,直到我意识到我有办公室x64位,所以我将应用程序构建为x64并工作。
我也意识到,如果你把它放在任何cpu,但不设置为首选32位也工作
让供应商12.0它适用于ACCESS 2013
只需安装这两个元素:
1)Microsoft Access 2013 Runtimehttps://www.microsoft.com/en-us/download/details.aspx?id=39358
然后2)microsoft access数据库引擎2007https://www.microsoft.com/en-us/download/details.aspx?id=23734
PS: x86 for 32位&
此处使用
提供者= Microsoft.ACE.OLEDB.15.0
这是ms access 2013的连接字符串