Microsoft Access数据库操作类(C#)

博文介绍的Microsoft Access数据库操作类是C#语言的,可实现对Microsoft Access数据库的增删改查询等操作。并且该操作类可实现对图片的存储,博文的最后附上如何将Image图片转换为byte[]数组类型,以及如何将byte[]数组类型转换为Image图片。

       博文中会贴出该类的下载地址,可以直接下载使用。

        注:操作Microsoft Access数据库需要安装Microsoft Office Access DataBase Engine,可以直接去微软的官网下载。

1. AccessOperate类

using System.Data;
using System.Data.OleDb;

//C#的Microsoft Access操作类
public class AccessOperate
{
    private string OleDbConnectionString;    //数据库连接

    /// <summary>
    /// 构造函数
    /// 初始化连接数据库参数
    /// </summary>
    public AccessOperate()
    {
        //Microsoft Access2003的连接语句
    //OleDbConnectionString = "Provider = Microsoft.ACE.OLEDB.4.0;Data Source=.\\Data\\DataBaseName.mdb;Jet OLEDB:Database Password=123456";
    //Microsoft Access2007及以上的连接语句
    OleDbConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=.\\Data\\DataBaseName.accdb;Jet OLEDB:Database Password=123456";
    }

    /// <summary>
    /// 构造函数
    /// 初始化连接数据库参数
    /// </summary>
    /// <param name="ConSqlServer">连接对象</param>
    public AccessOperate(string ConSqlServer)
    {
        OleDbConnectionString = ConSqlServer;
    }

    /// <summary>
    /// 打开数据库连接
    /// </summary>
    /// <param name="cnn">连接</param>
    public void Open(OleDbConnection cnn)
    {
        if (cnn.State == ConnectionState.Closed)
        {
            cnn.Open();
        }
    }

    /// <summary>
    /// 关闭数据库连接
    /// </summary>
    /// <param name="cnn">连接</param>
    public void Close(OleDbConnection cnn)
    {
        if (cnn != null)
        {
            if (cnn.State == ConnectionState.Open)
            {
                cnn.Close();
            }
            cnn.Dispose();
        }
    }

    /// <summary>
    /// 查询
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <returns>是否存在</returns>
    public bool ChaXun(string strSql)
    {
        OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
        OleDbCommand cmd = new OleDbCommand();
        try
        {
            Open(cnn);
            cmd = new OleDbCommand(strSql, cnn);
            return cmd.ExecuteReader().Read();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            cmd.Dispose();
            Close(cnn);
        }
    }

    /// <summary>
    /// 查询
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <returns>第一行第一列结果</returns>
    public string ChaXun2(string strSql)
    {
        OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
        OleDbCommand cmd = new OleDbCommand();
        try
        {
            Open(cnn);
            cmd = new OleDbCommand(strSql, cnn);
            return cmd.ExecuteScalar().ToString().Trim();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            cmd.Dispose();
            Close(cnn);
        }
    }

    /// <summary>
    /// 查询(OleDbDataReader)
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <returns>查询结果</returns>
    public OleDbDataReader GetDR(string strSql)
    {
        OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
        OleDbCommand cmd = new OleDbCommand();
        try
        {
            Open(cnn);
            cmd = new OleDbCommand(strSql, cnn);
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            cmd.Dispose();
        }
    }

    /// <summary>
    /// 查询(DataSet)
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <returns>查询结果</returns>
    public DataSet GetDS(string strSql)
    {
        OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
        OleDbDataAdapter sda = new OleDbDataAdapter();
        try
        {
            Open(cnn);
            sda = new OleDbDataAdapter(strSql, cnn);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            return ds;
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            sda.Dispose();
            Close(cnn);
        }
    }

    /// <summary>
    /// 查询(DataSet)
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <param name="tableName">指定DataSet["tableName"]表</param>
    /// <returns>查询结果</returns>
    public DataSet GetDS(string strSql, string tableName)
    {
        OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
        OleDbDataAdapter sda = new OleDbDataAdapter();
        try
        {
            Open(cnn);
            sda = new OleDbDataAdapter(strSql, cnn);
            DataSet ds = new DataSet();
            sda.Fill(ds, tableName);
            return ds;
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            sda.Dispose();
            Close(cnn);
        }
    }

    /// <summary>
    /// 查询(DataTable)
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <returns>查询结果</returns>
    public DataTable GetDT(string strSql)
    {
        return GetDS(strSql).Tables[0];
    }

    /// <summary>
    /// 查询(DataView)
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <returns>查询结果</returns>
    public DataView GetDV(string strSql)
    {
        return GetDS(strSql).Tables[0].DefaultView;
    }

    /// <summary>
    /// 增删改,无图片
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <returns>影响的行数</returns>
    public int RunSql(string strSql)
    {
        OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
        OleDbCommand cmd = new OleDbCommand();
        try
        {
            Open(cnn);
            cmd = new OleDbCommand(strSql, cnn);
            return cmd.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            cmd.Dispose();
            Close(cnn);
        }
    }

    /// <summary>
    /// 增改,有图片
    /// </summary>
    /// <param name="strSql">SQL语句</param>
    /// <param name="picbyte">图片的二进制数据</param>
    /// <returns>影响的行数</returns>
    public int RunSql(string strSql, byte[] picbyte)
    {
        OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
        OleDbCommand cmd = new OleDbCommand();
        try
        {
            Open(cnn);
            cmd = new OleDbCommand(strSql, cnn);
            cmd.Parameters.AddWithValue("@Image", SqlDbType.Image);
            cmd.Parameters["@Image"].Value = picbyte;
            return cmd.ExecuteNonQuery();
        }
        catch (Exception e)
        {
            throw new Exception(e.Message);
        }
        finally
        {
            cmd.Dispose();
            Close(cnn);
        }
    }
}

2. Image图片与byte[]数组的相互转换

using System.Drawing;
using System.IO;
using System.Drawing.Imaging;

// 将Image转换为二进制序列
public static byte[] ImageToBytes(Image image)
{
    MemoryStream ms = new MemoryStream();
    image.Save(ms, ImageFormat.Jpeg);
    byte[] bytes = new Byte[ms.Length];
    ms.Position = 0;
    ms.Read(bytes, 0, bytes.Length);
    ms.Close();
    return bytes;
}

// 将二进制序列转换为Image
public static Image BytesToImage(byte[] bytes)
{
    try
    {
        using (Stream fStream = new MemoryStream(bytes.Length))
        {
            BinaryWriter bw = new BinaryWriter(fStream);
            bw.Write(bytes);
            bw.Flush();
            Bitmap bitMap = new Bitmap(fStream);
            bw.Close(); 
            fStream.Close();
            Image image = Image.FromHbitmap(bitMap.GetHbitmap());
            return image;
        }
    }
    catch (IOException ex)
    {
        throw new Exception("读取图片失败:" + ex.Message);
    }
}

 

转载于:https://www.cnblogs.com/belx/p/9193058.html

Microsoft Access事务操作(C#) 事务是指用户定义的一个数据库操作序列,这些操作要么全做要么全不做,它是一个不可分割的工作单位。一个事务可以是一条SQL语句,一组SQL语句,或整个程序。 例子程序: public bool transactionOp() { // 事务成功返回true,事务失败返回false bool result = false; string SqlConnectionStri 阅读详情

相关推荐

Visual Studio 2017(C#)连接Microsoft Access 2010

1.首先用Microsoft Access 2010创建一个数据库test.accdb。2.打开Visual Studio 2017创建一个web窗体。3.双击“登录”按钮进去

shang_hu的博客 9010

microsoft access 数据库操作类

microsoft access 数据库操作类

Microsoft Access Database使用

SELECT * FROM 学生表 WHERE 姓名 = "张三" //如果是文本类型,要加英文分号。SELECT * FROM 学生表 WHERE 学号 = 1 //如果是数值,直接写。当涉及到大规模数据时,使用excel非常的卡顿,使用access就不会出现这个问题。“小规模数据用Excel,大规模数据用Access。3.access中的导出查询结果为excel。直接右键,新建 access数据库。修改sql语句,点击运行。选择视图--- sql视图。

modi000的博客 3491

C#链接Access数据库(增、删、改、查)

2、打开新创建的数据库,并点击表,将表改名为information。1、创建以Database2.mdb命名的数据库。3、 分别给表添加如下字段:姓名、国籍、电话、性别。1、数据增加的代码实现。2、数据删除的代码实现。3、数据修改的代码实现。4、数据查询的代码实现。

qq_51457391的博客 2763

C# 连接ACCESS数据库 - 增删改查(详细步骤)

基于上一篇博客C# 连接MySQL实现增删改查(详细步骤),现在记录下另一篇博客,如何连接ACCESS数据库实现增删改查。 总体上也不算很难,因为微软的Visual Studio 本就支持连接该数据库 ,不像MySQL数据库,还得下载插件安装才行! 创建ACCESS数据库 按照图片顺序创建一个简单的数据库吧! 一、在自己的windows哪里找到该数据库,并双击打开 二、修改一下数据库的保存路径,并创建空白数据库 三、在创建的表格中添加字段,并添加一些数据,最后ctrl + s保存一下,并修改该表名为st

cpp_learner的博客 1万+

C#微软Access数据库操作

C#对微软Access数据库操作 一、 所需环境:VS2015(楼主所用的版本),Microsoft Access 数据库 二、 首先我们创建一个WinForm窗体 Microsoft Access创建一个自己想要的文件格式 点击创建表 一切准备就绪!准备开干!!! 下面我们测试一下用VS能不能连接上这个数据库,操作如下 打开VS的工具,第一个选项,连接到数据库 ...

zc21463071的博客 1241

使用C#自动化Microsoft Access代码编译与数据库维护

本文还有配套的精品资源,点击获取 简介:本文介绍使用C#编程语言自动化处理Microsoft Access数据库的任务,包括编译VBA代码、压缩/修复数据库以及制作MDE文件。详细阐述了C#、.NET框架和Office Dev工具在自动化过程中的应用,以及如何利用相关技术提高Access数据库的维护效率和安全性。 1. C#编程语言在Access自动化中的应用 ...

weixin_42608318的博客 1143

C# ACCESS 数据库操作类

C#ACCESS数据操作类,执行SQL语句以及返回DataSet

C#实现的ACCESS数据库操作类完整实例

主要介绍了C#实现的ACCESS数据库操作类,结合完整实例形式分析了C#针对access数据库增删改查、事务、结果处理等相关操作技巧,需要的朋友可以参考下

C#读取Microsoft ACCESS数据

这个是在学习过程中,网上看到的代码 因为只有部分代码,学习过程中浪费了太多时间 现总结记录下,所有步骤记录。方便以后查看 1、新建一个项目 2、添加一个 button 3、添加一个dataGridView 4、打开Microsoft access,新建一个表格 表1(后面会用到这个名字) 将Database.mdb放在项目的Debug目录下 strin...

weixin_33834137的博客 720

构建*** C# ACCESS用户登录系统实战

本文还有配套的精品资源,点击获取 简介: 框架与C#结合用于Web应用开发,ACCESS作为轻量级数据库管理系统,适合初学者用于数据存储。在本实例中,我们将利用 、C#ACCESS构建一个简单的用户登录系统,涵盖数据库设计、数据验证和用户认证等多个关键知识点。学生将通过实践学习Web表单设计、事件驱动编程和防止SQL注入等重要概念。 1....

weixin_33240461的博客 1540

C#Microsoft Access数据库交互11个工程实战

自定义异常允许更精确地描述错误信息,并通过异常处理流程来指导问题的解决。例如,当发生数据验证失败时,可以抛出自定义异常:if (/* 条件不满足 */)throw new MyCustomException("数据验证失败,具体信息:...");异常处理流程通常包含以下步骤:抛出异常:当错误发生时,异常被抛出。捕获异常:使用try-catch块捕获异常,并给出相应的处理措施。清理资源:使用finally块确保资源被正确释放,即使发生异常也不例外。

weixin_34064233的博客 452

C#Access数据库的快速入门指南

C#(读作“C Sharp”)是由微软开发的一种强类型、面向对象的编程语言。作为.NET框架的一部分,它被设计为简单、现代、通用的编程语言。C# 的设计哲学深受 Java、C++ 和 Delphi 的影响,它支持多种编程范式,包括面向对象、命令式、函数式、泛型和组件编程。Microsoft Access是一款流行的桌面数据库管理系统,它被广泛应用于企业、教育机构和个人开发中。与其它数据库系统相比,Access具有几个显著特点和优势:易用性。

weixin_42576410的博客 793

Microsoft Access基础教程:数据库管理快速入门

本文还有配套的精品资源,点击获取 简介:本教程详细介绍了Access数据库管理系统的核心功能和应用,适合初学者快速学习并掌握数据库的创建、设计、操作、表间交互、宏与VBA编程以及数据安全与备份等方面的知识。内容覆盖了基础概念、表设计、关系构建、数据输入编辑、查询构建、窗体报表制作、宏使用、VBA编程、数据导入导出、应用程序发布、权限设置和数据备份恢复等多个方面,旨在帮助读者...

weixin_28746457的博客 5058

C#实现access数据库的增删改查

数据库连接测试如果失败,不代表代码运行的时候也连不上,如果你用的是64位access,你需要下载:Download Microsoft Access 2010 数据库引擎可再发行程序包 from Official Microsoft Download Center 下载完成后测试仍然报错,但是代码运行实际连接成功。 代码如下: using System; using System.Data; using System.Data.OleDb; namespace ConsoleAp.

Error的博客 2276
上一篇: 自定义GroupBox
下一篇: Winform改变Textbox边框颜色
android_12345
博客等级 码龄12年 2粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值