首页 > 解决方案 > “'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册”Win 10 64 位

问题描述

请原谅我再次问这个问题,但这些帖子中的大多数都很旧。无论如何,我在 64 位机器上运行 Windows 10。使用 VB 和 VS2015,我从 MS Access 2019 accdb 数据库中获取数据。 由于在这里阅读了很多帖子,我已经下载了 2010 Access 数据库引擎,但仍然得到“'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册”我只能通过 DotNet 连接到我的数据库2连接似乎不稳定,更不用说过时了。有任何想法吗?

标签: vb.netvisual-studioms-access

解决方案


你没有提到你安装了什么版本的ACE。

如果你的office是x32,那么我建议你下载+使用ACE的x86(x32)位版本。

但是,如果 Office 将是 x64 位,那么您必须下载并使用 ACE 的 x64 位版本。您还必须强制您的项目使用 x64 位。您的项目的任何 CPU 或 x86 设置都将不起作用,因为当您使用非托管代码(ACE 是)时,您必须强制项目为 ocrrect 位大小。

您还注意到您可以使用 VS 内置的连接构建器,但请记住,当使用 x64 位版本的 ACE 时,您可以使用连接构建器,但由于 VS 是 x32 位程序,因此测试连接按钮总是会失败,但是当您运行代码(并强制为 x64)时,连接将起作用。所以这里要小心,因为当使用 x64 ACE 时,VS 中的测试连接按钮会失败,但是当你运行项目时,这样的代码会连接并工作。如果您使用 x32 ACE,则可以使用任何 CPU,但您会冒问题的风险,因为开发过程中的任何 CPU 都会导致 x32 位“进程内”,因为 VS 是 x32 位程序。但是,如果您从 windows x64 位 shell 启动 .exe ANY CPU 程序,那么您将获得 x64 位“在线”进程,并且 x32 ACE 将再次失败。

由于上述?然后不要使用任何 CPU——因为你生成的程序和进程可以作为 x32 或 x64 启动——而且你经常在这里掷骰子。因此,如果使用 x32 (x86) ACE,则强制项目使用 x86。

如果您打算使用 x64 ACE,那么同样如此,然后将项目设置强制为 x64 位。

仅供参考:由于 VS 是 x32 位程序,因此您可以使用连接构建器(例如在设置中),并建立与 ACE 的 oleDB 连接。但是,当使用 x64 位 ACE 时,“测试连接”按钮总是会失败。您必须实际运行程序(强制为 x64)才能看到连接工作 - 测试连接按钮无法工作,因为 VS 是 x32 位,当 ACE 是 x64 时,测试连接按钮会给出一个 FALSE ERROR 你无法连接(您必须按照说明运行项目 - 强制为 x64 位)。

那么第一个问题和问题?

您安装了哪个版本的 ACE?(x32 位 (x86) 或 (x64 位 (x64))。

因此,您可以下载和安装两个版本的 ACE - 您想为您的项目设置选择正确的版本,并且您还必须设置项目设置您不想使用任何 CPU,但实际上选择并强制项目以正确的位大小运行。

虽然 .net 代码和程序集可以作为任一 CPU 设置运行,但 ACE 是一个外部库,并且是非托管代码。因此,这些外部代码库被预编译为 x32 或 x64 位。因此,您的项目设置必须与您计划运行的 ACE 的给定版本(位大小)相匹配。

编辑:

总而言之:

您必须安装 ACE 数据引擎。在这里能找到它:

https://www.microsoft.com/en-us/download/details.aspx?id=54920

在上面,当您点击下载时,您将有机会选择 ACE 数据库引擎的正确位大小。

您必须选择要使用的位大小。

就是这个: 在此处输入图像描述

现在再次(重复第 100 次)。

您可以在 VS 中使用连接构建器,但是当使用 x64 时,测试连接按钮将失败(它会失败,因为 VS 是 x32 位应用程序 - 它永远无法连接到 x64 ACE)。

所以 builder 可以工作,但 TEST connect 不行!!!

因此,在使用连接构建器时,您会看到:

在此处输入图像描述

在上面选择“更改”,然后你会得到这个:

在此处输入图像描述

好的,然后这个:

在此处输入图像描述

您需要检查高级选项卡,因为这可以让您在 JET 和 ACE 之间进行选择。

对于 x64 位,您只能选择/使用 ACE,并且您必须选择 ACE,因为没有 x64 位版本的 JET。

所以你在高级看到这个选择:

在此处输入图像描述

所以在上面,你必须选择 ACE 而不是 JET。

好的,现在有了上面,那么我们有这个:

在此处输入图像描述

所以,你可以点击确定,你可以使用浏览。而且您可以并且应该检查高级以 100% 确定您选择 ACE 代替喷气机。

但是您不能对 x64 使用测试连接 - 它不起作用,从来没有,而且由于 Visual Studio 是 x32 位程序,所以它永远无法通过测试连接选项(所以不要使用它!!! )。

当然,现在您还必须将项目设置为 x64 位,如下所示:

在此处输入图像描述

如果您没有看到也没有 x64 选项,请选择配置管理器,然后为项目创建 + 选择和设置 x64 位配置。

另外,我有一个.net 测试程序。您可以在此处找到此下载:

在上面,我有一个 x32 位版本和一个 x64 位版本。您可以尝试运行其中一个,看看哪个有效 - 尝试 x32 位的,然后尝试 x64 位的。您可以非常快速和轻松地找到您在计算机上安装和设置的 ACE 位大小。

https://1drv.ms/u/s!Avrwal_LV4qxhpdBOVIuD9P4iJmZhg?e=cFs8LY

在上面,您会找到两个 .exe 文件。一个 .net 示例编译为 x32,另一个编译为 x64。

在此处输入图像描述

当您运行 x32 时,您会得到:

在此处输入图像描述

所以上面显示了.net应用程序的位大小。

因此,您可以尝试使用 x32 或 x64 并查看两者中的哪一个连接。


推荐阅读