我正在为AutoCAD开发一个插件,需要从Microsoft Access读取数据。但是我总是有一个例外:
“ microsoft.xxx.oledb.x.0”提供程序未在本地计算机上注册
Windows 10 1803 + Office 365 + Microsoft Access数据库引擎2010 + Autodesk AutoCAD 2015
var path = "path_to_mdb_file");
var connectionString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data source={path}";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
...
测试通过
var path = "path_to_mdb_file");
var connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data source={path}";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
...
例外: the 'microsoft.ace.oledb.12.0' provider is not registered on the local machine
var path = "path_to_mdb_file");
var connectionString = $"Provider=Microsoft.Jet.OLEDB.4.0;Data source={path}";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
...
例外: the 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine
var path = "path_to_mdb_file");
var connectionString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data source={path}";
using (var connection = new OleDbConnection(connectionString))
{
connection.Open();
...
一切正常。
相同的代码,不同的结果,为什么?
答案 0 :(得分:0)
*.mdb
版本的确切的JET版本:
*.mdb
文件并验证文件的前32个字节是否包含ASCII字符串“ Standard Jet DB
”来执行此操作。
Standard ACE DB
”,则您有一个ACE数据库(*.accdb
),而不是刚刚重命名的JET Red(*.mdb
)文件。0x14
处的字节:
0x00
,则您有一个JET 3.0数据库(Access 95,Access 97)。0x01
,则您有一个JET 4.0数据库(Access 2000、2002、2003)。要通过OLE-DB使用JET 4.0数据库(而不是JET 3.0数据库!)(此问题与ODBC无关!),可以使用Microsoft.JET.OLEDB.4.0
或Microsoft.ACE.OLEDB.12.0
(或稍后)。
Microsoft.ACE.OLEDB.*
提供程序的以下版本支持JET 4.0数据库:
Microsoft.ACE.OLEDB.12.0
(Access 2007)
Microsoft.ACE.OLEDB.14.0
(Access 2010)
Microsoft.ACE.OLEDB.15.0
(Access 2013)
Microsoft.ACE.OLEDB.16.0
(Access 2016,Access 2019)
重要说明: Microsoft.Jet.OLEDB.4.0
提供程序仅适用于32位(x86)程序。
Microsoft.ACE.OLEDB.*
提供程序的所有版本均提供32位和64位版本,并且可以并行安装。
Microsoft.ACE.OLEDB.15.0
提供程序-但请注意,它还将版本15注册为Microsoft.ACE.OLEDB.12.0
的别名。
Microsoft.ACE.OLEDB.12.0
硬编码为嵌入的连接字符串,这意味着如果该软件在具有v14,v15或v16的计算机上运行并且没有运行,则它们将被破坏。没有安装v12。
Microsoft.JET.OLEDB.4.0
或Microsoft.ACE.OLEDB.12.0
。
*默认情况下,大多数Windows安装中都会安装32位Microsoft.JET.OLEDB.4.0
提供程序,而无需安装Office或Access。
*我不相信Windows中默认安装了Microsoft.ACE.OLEDB.12.0
。Microsoft.ACE.OLEDB.12.0
或更高版本,前提是已从Access Database Engine安装程序安装了64位提供程序。
Microsoft.ACE.OLEDB.16.0
)。