C#操作 Access 2013(.accdb)的方法

最近在处理一些本地数据库的时候发现,原来使用的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 

首先下载这个包。 

image.png

根据你开发的程序适应x86还是x64选择你要下载的数据库引擎包,我用个64位的做下示范。 

image.png

安装这个包不用说了吧 

image.png

好了安装完成开工。 
首先,我建立了一个简单的表。 

image.png

然后使用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产品,这个问题就无解了!

请大家注意这个坑!!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864