当在本地计算机上使用Microsoft Office相关库时,可能会出现“未在本地计算机上注册microsoft.ACE.oledb.12.0”提供程序的报错。这是由于缺少相关的驱动程序或者未安装相应的软件所导致的。下面是解决该问题的完整攻略。
可能是因为没有安装数据访问组件,需要安装相应版本的数据访问组件
请在这里下载[Microsoft 2010 Office System 驱动程序]
https://www.microsoft.com/en-us/download/details.aspx?id=13255https://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