System.InvalidOperationException:“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序
【寫在前面】
今天在做c#和ACCESS的連接測試時出現了如下圖的BUG:
(本人VS為2017,access為2016 64位專業版)
CODES:
報錯提示
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
總結
以上是生活随笔為你收集整理的System.InvalidOperationException:“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#学习notes
- 下一篇: C#学习Error问题:“System.