“‘Microsoft.ACE.OLEDB.12.0’提供程序未在本地计算机上注册”Win 10 64 位

1 vb.net ms-access visual-studio

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

Alb*_*lal 5

您没有提及您安装的 ACE 版本。

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

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

您还注意到,您可以使用 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 将再次失败。(但是如果您从 x32 位版本的 Windows shell 启动 .exe,那么您确实会获得 x32 位进程,并且可以使用 ACE x32)。

由于上述原因?然后不要使用任何 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)。

所以构建器可以工作,但测试连接不行!

因此,当使用连接生成器时,您会看到以下内容:

在此输入图像描述

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

在此输入图像描述

好的,然后是这个:

在此输入图像描述

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

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

所以你会提前看到这个选择:

在此输入图像描述

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

好的,现在有了上面的内容,我们就有了:

在此输入图像描述

所以,你可以点击确定,你可以使用浏览。您可以而且应该检查高级选项,以 100% 确定您在 jet 位置选择了 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,然后查看两者中的哪一个连接。