未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序报错的解决办法

当在本地计算机上使用Microsoft Office相关库时,可能会出现“未在本地计算机上注册microsoft.ACE.oledb.12.0”提供程序的报错。这是由于缺少相关的驱动程序或者未安装相应的软件所导致的。下面是解决该问题的完整攻略。

可能是因为没有安装数据访问组件,需要安装相应版本的数据访问组件

请在这里下载[Microsoft 2010 Office System 驱动程序] 

https://www.microsoft.com/en-us/download/details.aspx?id=13255icon-default.png?t=N7T8https://www.microsoft.com/en-us/download/details.aspx?id=13255

尝试安装 32-bit 或 64-bit 版本的 Microsoft Access Database Engine

确定已经安装了Microsoft Access数据库引擎,但程序仍然无法连接到数据库,则原因可能是要么“Microsoft.ACE.OleDb.12.0”未正确安装,要么程序是32位而安装的是64位组件,或者是安装的是32位组件而程序是64位的。可以通过以下方法检查解决该问题:

(1)检查当前系统的位数

首先需要检查当前系统是32位还是64位。按下[Windows键+X]键,在弹出菜单中选择“系统”,查看系统类型。

(2)根据系统位数,确定要安装的Microsoft Access Database Engine的版本

  • 如果当前系统是32位,需要安装32位版的Microsoft Access Database Engine。
  • 如果当前系统是64位,需要安装64位版的Microsoft Access Database Engine。

(3)安装Microsoft Access Database Engine

  • 打开Microsoft网站(https://www.microsoft.com/en-us/download/details.aspx?id=13255)下载对应的Microsoft Access Database Engine安装程序。
  • 执行安装程序,按流程进行选择安装。如果之前安装过Microsoft Access Database Engine,则可能需要卸载之前的版本。

安装完成后,重新启动程序,检查能否正常连接数据库。

示例1:

以下是一个使用C#连接Access数据库的示例:

using System.Data.OleDb; 
public static void mytest() 
{ 
     string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\DB.accdb"; 
     string queryString = "SELECT * FROM Table1"; 

     OleDbConnection conn = new OleDbConnection(connectionString); 
     conn.Open(); 

     OleDbCommand command = new OleDbCommand(queryString, conn); 
     OleDbDataReader reader = command.ExecuteReader(); 

     while (reader.Read()) 
     { 
         Console.WriteLine(reader["col1"].ToString()); 
     } 

     reader.Close(); 
     conn.Close(); 
} 

示例2:

以下是一个使用Python连接Access数据库的示例:

import pyodbc 
conn_str = 'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=D:\DB.accdb' 

cnxn = pyodbc.connect(conn_str) 

Cursor = cnxn.cursor() 
Cursor.execute("SELECT * FROM Table1") 

for row in Cursor: 
    print row 

你可能感兴趣的:(数据库,microsoft)