" Microsoft.ACE.OLEDB.12.0“在Windows 10中无法识别

时间:2016-08-18 14:04:40

标签: c# winforms ms-access windows-10

背景

我正在开发一个连接到Microsoft Access数据库的Windows窗体应用程序。

这是我在开发中使用的示例代码:

try
{
    string AccessFilePath = @"\.myDataBase.mdb"; // Path of the Access database.
    string sqlStatement = "SELECT * FROM myTable WHERE IdTable = 5;";
    string connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + AccessFilePath;
    OleDbConnection conn = new OleDbConnection(connstr);
    OleDbCommand cmd = new OleDbCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = sqlStatement;
    cmd.Connection = conn;
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();
}
catch (Exception ex)
{
    MessageBox("Error: " + ex.Message);
}

以下列表描述了我的开发环境:

  • Visual Studio 2015社区
  • 在Framework .NET 4.0中创建的解决方案
  • 操作系统:Windows 10 Pro - 64位。
  • 此开发必须适用于Windows XP,Windows 7和更高版本。

我已安装:

问题

在我的PC 中有Windows 10 Pro OS ,我在 C:/ 硬盘中搜索,我发现 ACEOLEDB.DLL 已安装在以下位置:

这是之前安装数据连接组件:

- C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16
- C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE15
- C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE14

点击放大图片:

Previous to install Data Connectivity Components

当我在PC中安装数据连接组件时, ACEOLEDB.DLL 位于:

- C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared

我真的不知道为什么即使安装了数据连接组件之后我仍然会收到此错误:

  

"' Microsoft.ACE.OLEDB.12.0'提供商未在本地计算机上注册"

问题

  • 操作系统如何处理数据连接组件?
  • 如果操作系统安装了数据连接组件,如何正确验证?

1 个答案:

答案 0 :(得分:2)

将用户LarsTech在<{3}}中建议的平台目标更改为 x86 后,在具有Windows 7操作系统的最终用户计算机中没有安装Office套件。它运作正常。

我认为这种改变就足够了,但是,由于某些未知的原因,在我的电脑中,那不是。

所以,我必须再次研究,我发现了一个类似的问题comment

此特定情况下的解决方法 是安装:

<强> here

在我的案例中,创建了以下 ACEOLEDB.DLL 条目:

- C:\Program Files (x86)\Common Files\Microsoft Shared\OFFICE12
- C:\Windows\Installer\$PatchCache$\Managed\00004109C10000000000000000F01FEC\14.0.4763

我认为最后一个条目是由2010 Runtime安装创建的。