System.InvalidOperationException:“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序

【写在前面】
今天在做c#和ACCESS的连接测试时出现了如下图的BUG:
(本人VS为2017,access为2016 64位专业版)
CODES:
在这里插入图片描述

  1. 报错提示
    在这里插入图片描述

  2. error location
    在这里插入图片描述
    【原因分析】
    这个错误的根本原因就是应用程序(32 位代码)和与 64 位 Microsoft Access 一同安装的 64 位 ACE 提供程序之间的版本不匹配,造成了错误“’Microsoft.ACE.OLEDB.12.0’ 提供程序未在本地计算机上注册”。

    **知识点延伸:**
    
    • 共同点:所有都是连接到Excel对象的接口引擎
    • 不同点:
      1)对于不同版本的zhiExcel,有两个接口可供选择:daoMicrosoft.Jet.OLEDB.4.0(以下简称Jet引擎)和microsoft.ace.oledb.12.0(以下简称ACE引擎)。Jet引擎可以访问office 97-2003,但是你无法
      访问office 2007。ACE引擎是与Office 20,071一起发布的数据库连接组件,您可以访问Office 2007或Office 97-2003。
      2)microsoft.ace.oledb.12.0可以访问正在打开的Excel文件,而microsoft.jet.oledb.4.0是不可能的。因此,在使用不同版本的Office时,请注意使用正确的引擎。

扩展资料:

从2007版本开始,Access包含特定于Office的Jet版本,最初称为Office Access连接引擎(ACE),但现在称为Access数据库引擎。此引擎完全向后兼容以前版本的Jet引擎,因此它从早期的Access版本读取和写入(.mdb)文件。它引入了一种新的默认文件格式(.accdb),它为Access带来了一些改进,包括复杂数据类型,如多值字段,附件数据类型和备注字段中的历史记录跟踪。它还带来了安全性和加密性改进,并支持与Microsoft Windows SharePoint Services 3.0和Microsoft Office Outlook 2007的集成。

在这里插入图片描述

 **【解决方案】**

1.下载office驱动程序,安装数据连接组件(官网下载链接
https://www.microsoft.com/en-us/download/details.aspx?id=54920
(本人下载的连接:)
2.将 ConnectionString 属性的 Provider 参数设置为“Microsoft.ACE.OLEDB.16.0”如果要连接到 Microsoft Office access 数据,如果有问题的可以参考我下面的代码修改一下。
在这里插入图片描述

3.在运行框用inetmgr命令打开IIS管理器,选择该应用程序的应用程序池——>高级设置——>启动32位应用程序——>true
在这里插入图片描述
在这里插入图片描述

【ps】有些童鞋的IIS可能没打开,在管理工具中找不到,不要紧,下面介绍一下IIS的打开方式
https://jingyan.baidu.com/article/ac6a9a5e36977d2b653eacb2.html

原文链接:https://blog.csdn.net/YYZZHC999/article/details/79367114

猜你喜欢

转载自blog.csdn.net/weixin_44322778/article/details/107528864