1

我收到错误:

System.InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

我有一个 64 位系统和一个安装了 Office 2010 32 位的 64 位应用程序。我的 64 位应用程序如何访问 OLEDB?

如何列出系统上可用的提供程序?

4

1 回答 1

5

我的 64 位应用程序如何访问 OLEDB?

“Microsoft.ACE.OLEDB.12.0”,即 Microsoft Access Database Engine 2010 Redistributable 可以从这里下载。还有一个 64 位版本。

可以在此处找到“Microsoft.ACE.OLEDB.12.0”提供程序的连接字符串。

如何列出系统上可用的提供程序?

使用OleDbEnumerator.GetRootEnumerator

using System;
using System.Data;
using System.Data.OleDb;

class Program
{
 static void Main()
 {
   OleDbDataReader reader = OleDbEnumerator.GetRootEnumerator();

   DisplayData(reader);

   Console.WriteLine("Press any key to continue.");
   Console.ReadKey();
 }

 static void DisplayData(OleDbDataReader reader)
 {
   while (reader.Read())
   {
     for (int i = 0; i < reader.FieldCount; i++)
     {
       Console.WriteLine("{0} = {1}",
        reader.GetName(i), reader.GetValue(i));
     }
     Console.WriteLine("==================================");
   }
 }
}
于 2012-06-20T21:06:54.467 回答