Database Access 2013的OleDb连接字符串是什么?

Database Access 2013的OleDb连接字符串是什么?,database,ms-access,visual-studio-2012,connection-string,ms-access-2013,Database,Ms Access,Visual Studio 2012,Connection String,Ms Access 2013,我正在使用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

我正在使用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数据库引擎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:\Users\Gord\Desktop\Database1.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
我从中复制了连接字符串

编辑…

如果您有权访问web服务器,则可以检查是否存在以下两个文件:

C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL

C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL
在64位计算机上,第一个文件表示已安装64位版本的Access数据库引擎。在32位机器上,表示已安装32位版本

如果存在第二个(x86)文件,则您知道64位计算机上存在32位版本的Access数据库引擎

编辑回复:最终评论

问题确实与Access数据库引擎的“比特数”有关:

我安装了64位的“Microsoft Access数据库引擎2010”,我应该安装32位的,因为我的visual studio是32位的。谢谢你的建议


作为web服务器的计算机必须安装“Microsoft Access数据库引擎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:\Users\Gord\Desktop\Database1.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
我从中复制了连接字符串

编辑…

如果您有权访问web服务器,则可以检查是否存在以下两个文件:

C:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL

C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL
在64位计算机上,第一个文件表示已安装64位版本的Access数据库引擎。在32位机器上,表示已安装32位版本

如果存在第二个(x86)文件,则您知道64位计算机上存在32位版本的Access数据库引擎

编辑回复:最终评论

问题确实与Access数据库引擎的“比特数”有关:

我安装了64位的“Microsoft Access数据库引擎2010”,我应该安装32位的,因为我的visual studio是32位的。谢谢你的建议

这里用这个

provider=Microsoft.ACE.OLEDB.15.0

这是ms access 2013的连接字符串此处使用

provider=Microsoft.ACE.OLEDB.15.0


这是ms access 2013的连接字符串

这取决于您安装的office,如果您有x64位office,则必须将应用程序编译为x64以允许其运行,因此如果您希望它在x36上运行,则必须安装office x86以接受,我尝试了上面所有的解决方案,但都没有成功,直到我意识到我有office x64bit,所以我将应用程序构建为x64并成功运行


我还意识到,如果您将其放在任何cpu上,但未设置为prefere 32位也可以工作,这取决于您安装的office,如果您有x64位office,则必须将应用程序编译为x64以允许其运行,因此如果您希望它在x36上运行,则必须安装office x86以接受,我尝试了上面所有的解决方案,但都没有成功,直到我意识到我有office x64bit,所以我将应用程序构建为x64并成功运行


我还意识到,如果您将其放在任何cpu上,但未设置为prefere 32位也可以工作

让提供程序设置为12.0,则它可以用于ACCESS 2013

只需安装以下两个元素:

1) Microsoft Access 2013运行时:

然后

2) microsoft access数据库引擎2007:


PS:x86用于32位,x64用于64位。

让提供商使用12.0,它适用于ACCESS 2013

只需安装以下两个元素:

1) Microsoft Access 2013运行时:

然后

2) microsoft access数据库引擎2007:


PS:x86表示32位,x64表示64位。

您是否已验证
Page.Server.MapPath()
是否返回有效路径,否则此连接字符串似乎没有问题。您可以找到连接字符串。这是我的数据库分配。我已经验证了我对我的答案进行了另一次编辑。您是否验证了
Page.Server.MapPath()
返回了有效路径,否则此连接字符串似乎没有问题。您可以找到连接字符串。这是我的数据库分配。我已经验证我对我的答案进行了另一次编辑。感谢您的回复,但它不起作用,它仍然会弹出相同的错误:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。您知道什么是Microsoft Access 2013的字符串连接吗?如果我的源代码是这样的:string connectionString=“provider=Microsoft.ACE.OLEDB.12.0;”“+”数据源=“+Page.Server.MapPath”(“App_data\\db1.accdb”);//创建一个OleDbConnection对象以连接到数据库System.Data.OleDb.OleDbConnection conn=new System.Data.OleDb.OleDbConnection(connectionString);我应该将其更改为:@user712063我不确定您的连接字符串是否有问题。您在另一条评论中说,您已验证
Page.Server.MapPath(“App\u Data\\db1.accdb”)
正在返回.accdb文件的有效路径。我们的连接字符串之间唯一的实质性区别是