最近在处理一些本地数据库的时候发现,原来使用的Microsoft.Jet.OLEDB.4.0,的方法并不能连接最新的Access 存储文件,而且Microsoft.Jet.OLEDB.4.0不能使用x64的方式生成,而且使用这个数据库引擎效率也是比较低的。这让我比较苦恼。现在发现了另一个新的引擎并且支持x64。Microsoft.ACE.OLEDB.15.0 ,现在给大家展示如何使用。
并且贴出下载文件的位置
Microsoft Access 2010 数据库引擎可再发行程序包
http://www.microsoft.com/zh-cn/download/details.aspx?id=13255
首先下载这个包。
根据你开发的程序适应x86还是x64选择你要下载的数据库引擎包,我用个64位的做下示范。
安装这个包不用说了吧
好了安装完成开工。
首先,我建立了一个简单的表。
然后使用C# 连接并且操作。
下面是我的插入的C#代码
OleDbConnectionStringBuilder oleString = new OleDbConnectionStringBuilder(); //为了使大家更清楚使用这个类,制造一个连接字符串 oleString.Provider = "Microsoft.ACE.OleDB.15.0"; //使用刚刚安装的数据库引擎,大家不要写错了 oleString.DataSource = @"F:\数据库1.accdb"; //这里写你数据库连接的位置 OleDbConnection conn = new OleDbConnection(); //创建OleDb连接对象 conn.ConnectionString = oleString.ToString(); //将生成的字符串传入 conn.Open(); //打开数据库 OleDbCommand mycmd = new OleDbCommand(); //创建sql命令对象 mycmd.Connection = conn; //设置连接 mycmd.CommandText = "Insert into Users(用户名,密码,家庭地址) values(@name,@pwd,@address)"; //并且用sql参数形式插入数据 mycmd.Parameters.AddWithValue("@name","apple"); mycmd.Parameters.AddWithValue("@pwd","password"); mycmd.Parameters.AddWithValue("@address","address1"); //加入参数值 mycmd.ExecuteNonQuery(); //执行插入语句 conn.Close(); //最后不要忘了关数据库 mycmd.Dispose();
另一篇资料如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Data.OleDb; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { AccessConnectionDB(); } /// <summary> /// Access连接数据库的方法 /// </summary> protected void AccessConnectionDB() { string strConnection = "Provider = Microsoft.ACE.OLEDB.12.0;"; //C#读取Excel的连接字符串 strConnection += @"Data Source = D:/DB/DBTest.accdb"; //指定数据库在硬盘的物理位置 int age = 0; string name = ""; using (OleDbConnection objConnection = new OleDbConnection(strConnection)) //用using替代objConnection.Close() { objConnection.Open(); //打开连接 OleDbCommand sqlcmd = new OleDbCommand(@"select * from YongHu where ypassword='11111'", objConnection); //sql语句 using (OleDbDataReader reader = sqlcmd.ExecuteReader()) //执行查询,用using替代reader.Close() { if (reader.Read()) //这个read调用很重要!不写的话运行时将提示找不到数据 { // age = (int)reader["yname"]; //取得字段的值 name = reader["yname"].ToString(); //取得字段的值 } } } this.Label1.Text = string.Format(this.Label1.Text, name, age); } }
勇哥2019/8/27注:
这个方法有个严重的问题,当你的电脑上事先安装有office32位版本的时候,这个64位的OLEDB是安装不了的。
提示你必须先写缷载32的office,再安装本产品!
由于工控电脑上一般只会安装有32位的office产品,这个问题就无解了!
请大家注意这个坑!!

