c# - Microsoft Office 12.0 Access 数据库引擎 OLE DB Provider
问题描述
系统:Windows 10 64 位
安装的程序:
- 视觉工作室 2019
- 微软办公室 2019 64 位
- Microsoft Access 数据库引擎 2010 32bit
C# 和 Access 数据库之间的连接不成功。
错误信息:
Microsoft Office 12.0 Access 数据库引擎 OLE DB Provider。
如何在不卸载 Microsoft Access Database Engine 2010 32bit 的情况下成功连接?
解决方案
一些事情:你提到你有office x64位,但你没有提到或注意那个版本的office是否包含Access——它可能没有。您还提到您安装了 Access x32 位。那么最大的问题是您想以 x32 还是 x64 运行您的 .net 应用程序?
默认情况下,如果您的 .net 项目是“ANY CPU”或 x86,那么您的代码将以 x32 运行,因此从 Access 2010 安装的 x32 位版本的 ACE 应该可以工作 - 但前提是您为 .net 选择的 CPU 是“任何”或 x86。
如果您需要或想要使用 x64 位进程?好吧,您必须从办公室安装 ACE/office 连接包。事实上,即使您的办公室安装包括 Access 2016 或 2019,您仍然必须安装 ACE 数据引擎。对于 2010,您不需要单独安装 ACE,但对于 2016 及更高版本,您必须单独安装 ACE。
另外请记住,如果您强制将 .net 项目作为 x64 位运行,那么 Visual Studio 内部的测试连接将失败,因为它是 x32 位进程。(VS 是一个 x32 位程序 - 因此您可以在 VS 中使用连接构建器,但对于 64 位测试连接将失败,但运行程序(即使作为调试)将以 x64 位运行,您应该/可以使用 ACE x64 位如果它已安装。所以请记住,对于 x64 位,VS 内部的“测试”连接将不起作用。但运行代码会。
如前所述,如果您尝试使用 x32 位,则强制您的 VS 项目使用 x86 并进行测试。Access 2010 ACE 应该可用。如果不是,那么我将对 2010 安装进行修复 - 它可能已被安装更高版本的 office 损坏或弄乱了。
推荐阅读
- javascript - 如何更改 React Google Charts 背景颜色?
- android - 在 android studio 中为 FCM 实现 firebase 依赖项时出错
- kotlin - Kotlin 枚举构造函数参数“必须初始化”,伴随对象常量没有限定符名称
- python - 如何将列表转换为字典?
- java - 在不同线程中启动的 ServerSocket 使 JavaFX 应用程序冻结
- prolog - 递归地在序言中创建一个列表
- r - 从现有数据框重塑 R 数据框
- serialization - 为什么在使用手动实现的 Serialize 对具有结构变体的枚举进行序列化到 TOML 时会出现 UnsupportedType 错误?
- javascript - 多元素的一个功能
- reactjs - 动态反应将子级添加到 jsx/component