博文介绍的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[];
} /// <summary>
/// 查询(DataView)
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <returns>查询结果</returns>
public DataView GetDV(string strSql)
{
return GetDS(strSql).Tables[].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 = ;
ms.Read(bytes, , 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);
}
}

Microsoft Access数据库操作类(C#)的更多相关文章

  1. C# ACCESS数据库操作类

    这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! usi ...

  2. C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]

    原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using Sy ...

  3. C#---数据库访问通用类、Access数据库操作类、mysql类 .

    //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System. ...

  4. 一个基于ASP.NET(C#)的ACCESS数据库操作类

    using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...

  5. C# 动软生成器对应的Access数据库操作类DbHelperOleDb

    using System;using System.Collections;using System.Collections.Specialized;using System.Data;using S ...

  6. MySQL数据库操作类(PHP实现,支持连贯操作)

    <?php /** * Author: suvan * CreateTime: 2018/2/27 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数) ...

  7. Oracle数据库操作类及连接方法

    创建DataBaseAccess引用库下面包括DBConnectionString.cs,DBType.cs ,SysName.cs 三个类 DBConnectionString: using Sys ...

  8. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  9. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

随机推荐

  1. nginx实战操作(常用命令及配置)

    1. nginx介绍 2. nginx常用命令 验证配置是否正确: nginx -t 查看Nginx的详细的版本号:nginx -V 查看Nginx的简洁版本号:nginx -v 启动Nginx:st ...

  2. JVM的内存区域

    Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域, 包含程序计数器.虚拟机栈.本地方法栈.Java堆.方法区(运行时常量池).直接内存等,不同的版本会有所差异 各区 ...

  3. Spring Cloud 之 Zuul基础.

    一.概述  API 网关是一个更为智能的应用服务器,它的定义类似于面向对象设计模式中的 Facade 模式,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤 ...

  4. 【小程序】小程序中设置 tabBar

    小程序中 tabBar 的设置,tabBar 就是底部导航栏,在app.json中配置. list 为数组至少两项.tab栏的 position 为 top 时间,不显示图标. "tabBa ...

  5. 小白开学Asp.Net Core《二》

    小白开学Asp.Net Core<二> ——数据仓储层(Repositroy) 一.历史现象 在后端开发中,数据库操作是最频繁的,每一个开发人员都会接触,甚至不少开发人员每天的工作就是与数 ...

  6. pycharm编辑器配置(持续更新完善)

    谨记:pycharm仅是一款编辑器,不要太依赖 pycharm的提示,不然后期换了编辑器就不行了 python解释器安装.多版本共存等 去python官网下载安装,配置环境变量.多版本共存等问题请参见 ...

  7. Java的几种创建实例方法的性能对比

    近来打算自己封装一个比较方便读写的Office Excel 工具类,前面已经写了一些,比较粗糙本就计划重构一下,刚好公司的电商APP后台原有的导出Excel实现出现了可怕的性能问题,600行的数据生成 ...

  8. DH、RSA与ElGamal非对称加密算法实现及应用

    1.对称加密与非对称加密概述 关于对称加密与非对称加密的概念这里不再多说,感兴趣可以看下我之前的几篇文章,下面说一说两者的主要区别. 对称加密算法数据安全,密钥管理复杂,密钥传递过程复杂,存在密钥泄露 ...

  9. 第二章: Java总结

    第二章笔记 什么是变量:变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样.#在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据.说白了,变量就是代表程序运行时存放 ...

  10. 【Android Studio】Gradle DSL method not found:'android()'

    如图所示: 参考:http://www.jianshu.com/p/d370d41fb7da 又遇到了这个问题: 参考:http://stackoverflow.com/questions/24204 ...