最近在处理一些本地数据库的时候发现,原来使用的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产品,这个问题就无解了!
请大家注意这个坑!!


少有人走的路


















