vb.net - “'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连接似乎不稳定,更不用说过时了。有任何想法吗?
解决方案
你没有提到你安装了什么版本的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 并查看两者中的哪一个连接。
推荐阅读
- mongodb - MongoDB多字段索引性能
- python-3.x - 如何删除两列图像之间的空白区域?
- python - 滨松相机蟒
- linux - 安装 Sentinel 服务器时出现问题
- java - application.default.properties 文件会被选中吗?
- reactjs - 使用 React-Bootstrap 中的 Nav.Link 时如何避免重新加载整个应用程序?
- java - 摩尔斯电码到英语翻译器给出 ArrayIndexoutofBounds
- python-3.x - 在两个相邻节点之间具有多条边的图中查找所有可能的路径
- swift - 如何在 SwiftUI 中水平滚动列表?
- php - 我需要将一段 RUBY 转换为 PHP,我需要关于它为什么不起作用的建议