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

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

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

1. AccessOperate类

  1. using System.Data;
  2. using System.Data.OleDb;
  3.  
  4. //C#的Microsoft Access操作类
  5. public class AccessOperate
  6. {
  7. private string OleDbConnectionString; //数据库连接
  8.  
  9. /// <summary>
  10. /// 构造函数
  11. /// 初始化连接数据库参数
  12. /// </summary>
  13. public AccessOperate()
  14. {
  15. //Microsoft Access2003的连接语句
  16. //OleDbConnectionString = "Provider = Microsoft.ACE.OLEDB.4.0;Data Source=.\\Data\\DataBaseName.mdb;Jet OLEDB:Database Password=123456";
  17. //Microsoft Access2007及以上的连接语句
  18. OleDbConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=.\\Data\\DataBaseName.accdb;Jet OLEDB:Database Password=123456";
  19. }
  20.  
  21. /// <summary>
  22. /// 构造函数
  23. /// 初始化连接数据库参数
  24. /// </summary>
  25. /// <param name="ConSqlServer">连接对象</param>
  26. public AccessOperate(string ConSqlServer)
  27. {
  28. OleDbConnectionString = ConSqlServer;
  29. }
  30.  
  31. /// <summary>
  32. /// 打开数据库连接
  33. /// </summary>
  34. /// <param name="cnn">连接</param>
  35. public void Open(OleDbConnection cnn)
  36. {
  37. if (cnn.State == ConnectionState.Closed)
  38. {
  39. cnn.Open();
  40. }
  41. }
  42.  
  43. /// <summary>
  44. /// 关闭数据库连接
  45. /// </summary>
  46. /// <param name="cnn">连接</param>
  47. public void Close(OleDbConnection cnn)
  48. {
  49. if (cnn != null)
  50. {
  51. if (cnn.State == ConnectionState.Open)
  52. {
  53. cnn.Close();
  54. }
  55. cnn.Dispose();
  56. }
  57. }
  58.  
  59. /// <summary>
  60. /// 查询
  61. /// </summary>
  62. /// <param name="strSql">SQL语句</param>
  63. /// <returns>是否存在</returns>
  64. public bool ChaXun(string strSql)
  65. {
  66. OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
  67. OleDbCommand cmd = new OleDbCommand();
  68. try
  69. {
  70. Open(cnn);
  71. cmd = new OleDbCommand(strSql, cnn);
  72. return cmd.ExecuteReader().Read();
  73. }
  74. catch (Exception e)
  75. {
  76. throw new Exception(e.Message);
  77. }
  78. finally
  79. {
  80. cmd.Dispose();
  81. Close(cnn);
  82. }
  83. }
  84.  
  85. /// <summary>
  86. /// 查询
  87. /// </summary>
  88. /// <param name="strSql">SQL语句</param>
  89. /// <returns>第一行第一列结果</returns>
  90. public string ChaXun2(string strSql)
  91. {
  92. OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
  93. OleDbCommand cmd = new OleDbCommand();
  94. try
  95. {
  96. Open(cnn);
  97. cmd = new OleDbCommand(strSql, cnn);
  98. return cmd.ExecuteScalar().ToString().Trim();
  99. }
  100. catch (Exception e)
  101. {
  102. throw new Exception(e.Message);
  103. }
  104. finally
  105. {
  106. cmd.Dispose();
  107. Close(cnn);
  108. }
  109. }
  110.  
  111. /// <summary>
  112. /// 查询(OleDbDataReader)
  113. /// </summary>
  114. /// <param name="strSql">SQL语句</param>
  115. /// <returns>查询结果</returns>
  116. public OleDbDataReader GetDR(string strSql)
  117. {
  118. OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
  119. OleDbCommand cmd = new OleDbCommand();
  120. try
  121. {
  122. Open(cnn);
  123. cmd = new OleDbCommand(strSql, cnn);
  124. return cmd.ExecuteReader(CommandBehavior.CloseConnection);
  125. }
  126. catch (Exception e)
  127. {
  128. throw new Exception(e.Message);
  129. }
  130. finally
  131. {
  132. cmd.Dispose();
  133. }
  134. }
  135.  
  136. /// <summary>
  137. /// 查询(DataSet)
  138. /// </summary>
  139. /// <param name="strSql">SQL语句</param>
  140. /// <returns>查询结果</returns>
  141. public DataSet GetDS(string strSql)
  142. {
  143. OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
  144. OleDbDataAdapter sda = new OleDbDataAdapter();
  145. try
  146. {
  147. Open(cnn);
  148. sda = new OleDbDataAdapter(strSql, cnn);
  149. DataSet ds = new DataSet();
  150. sda.Fill(ds);
  151. return ds;
  152. }
  153. catch (Exception e)
  154. {
  155. throw new Exception(e.Message);
  156. }
  157. finally
  158. {
  159. sda.Dispose();
  160. Close(cnn);
  161. }
  162. }
  163.  
  164. /// <summary>
  165. /// 查询(DataSet)
  166. /// </summary>
  167. /// <param name="strSql">SQL语句</param>
  168. /// <param name="tableName">指定DataSet["tableName"]表</param>
  169. /// <returns>查询结果</returns>
  170. public DataSet GetDS(string strSql, string tableName)
  171. {
  172. OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
  173. OleDbDataAdapter sda = new OleDbDataAdapter();
  174. try
  175. {
  176. Open(cnn);
  177. sda = new OleDbDataAdapter(strSql, cnn);
  178. DataSet ds = new DataSet();
  179. sda.Fill(ds, tableName);
  180. return ds;
  181. }
  182. catch (Exception e)
  183. {
  184. throw new Exception(e.Message);
  185. }
  186. finally
  187. {
  188. sda.Dispose();
  189. Close(cnn);
  190. }
  191. }
  192.  
  193. /// <summary>
  194. /// 查询(DataTable)
  195. /// </summary>
  196. /// <param name="strSql">SQL语句</param>
  197. /// <returns>查询结果</returns>
  198. public DataTable GetDT(string strSql)
  199. {
  200. return GetDS(strSql).Tables[];
  201. }
  202.  
  203. /// <summary>
  204. /// 查询(DataView)
  205. /// </summary>
  206. /// <param name="strSql">SQL语句</param>
  207. /// <returns>查询结果</returns>
  208. public DataView GetDV(string strSql)
  209. {
  210. return GetDS(strSql).Tables[].DefaultView;
  211. }
  212.  
  213. /// <summary>
  214. /// 增删改,无图片
  215. /// </summary>
  216. /// <param name="strSql">SQL语句</param>
  217. /// <returns>影响的行数</returns>
  218. public int RunSql(string strSql)
  219. {
  220. OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
  221. OleDbCommand cmd = new OleDbCommand();
  222. try
  223. {
  224. Open(cnn);
  225. cmd = new OleDbCommand(strSql, cnn);
  226. return cmd.ExecuteNonQuery();
  227. }
  228. catch (Exception e)
  229. {
  230. throw new Exception(e.Message);
  231. }
  232. finally
  233. {
  234. cmd.Dispose();
  235. Close(cnn);
  236. }
  237. }
  238.  
  239. /// <summary>
  240. /// 增改,有图片
  241. /// </summary>
  242. /// <param name="strSql">SQL语句</param>
  243. /// <param name="picbyte">图片的二进制数据</param>
  244. /// <returns>影响的行数</returns>
  245. public int RunSql(string strSql, byte[] picbyte)
  246. {
  247. OleDbConnection cnn = new OleDbConnection(OleDbConnectionString);
  248. OleDbCommand cmd = new OleDbCommand();
  249. try
  250. {
  251. Open(cnn);
  252. cmd = new OleDbCommand(strSql, cnn);
  253. cmd.Parameters.AddWithValue("@Image", SqlDbType.Image);
  254. cmd.Parameters["@Image"].Value = picbyte;
  255. return cmd.ExecuteNonQuery();
  256. }
  257. catch (Exception e)
  258. {
  259. throw new Exception(e.Message);
  260. }
  261. finally
  262. {
  263. cmd.Dispose();
  264. Close(cnn);
  265. }
  266. }
  267. }

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

  1. using System.Drawing;
  2. using System.IO;
  3. using System.Drawing.Imaging;
  4.  
  5. // 将Image转换为二进制序列
  6. public static byte[] ImageToBytes(Image image)
  7. {
  8. MemoryStream ms = new MemoryStream();
  9. image.Save(ms, ImageFormat.Jpeg);
  10. byte[] bytes = new Byte[ms.Length];
  11. ms.Position = ;
  12. ms.Read(bytes, , bytes.Length);
  13. ms.Close();
  14. return bytes;
  15. }
  16.  
  17. // 将二进制序列转换为Image
  18. public static Image BytesToImage(byte[] bytes)
  19. {
  20. try
  21. {
  22. using (Stream fStream = new MemoryStream(bytes.Length))
  23. {
  24. BinaryWriter bw = new BinaryWriter(fStream);
  25. bw.Write(bytes);
  26. bw.Flush();
  27. Bitmap bitMap = new Bitmap(fStream);
  28. bw.Close();
  29. fStream.Close();
  30. Image image = Image.FromHbitmap(bitMap.GetHbitmap());
  31. return image;
  32. }
  33. }
  34. catch (IOException ex)
  35. {
  36. throw new Exception("读取图片失败:" + ex.Message);
  37. }
  38. }

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. 深入学习Spring框架(四)- 事务管理

    1.什么是事务? 事务(Transaction)是一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位.事务是为了保证数据库的完整性.例如:A给B转账,需 ...

  2. Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现

    昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...

  3. 利用stub技术进行单元测试

    待测试类:WebClient: import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConne ...

  4. Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现

    Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现 一.漏洞描述 该漏洞是由于tomcat CGI将命令行参数传递给Win ...

  5. C#2.0新增功能06 协变和逆变

    连载目录    [已更新最新开发文章,点击查看详细] 在 C# 中,协变和逆变能够实现数组类型.委托类型和泛型类型参数的隐式引用转换. 协变保留分配兼容性,逆变则与之相反. 以下代码演示分配兼容性.协 ...

  6. vijos p1484 ISBN号码

    #include<iostream>#include<string>#include<cctype>using namespace std;int main() { ...

  7. Java 常见面试题整理

    操作系统 说一下线程和进程,它们的区别 同步和异步的区别 阻塞和非阻塞的区别 操作系统中死锁的四个必要条件 mmap和普通文件读写的区别,mmap的注意点 CPU密集型和IO密集型的区别 Linux ...

  8. MySQL图形工具SQLyog破解版

    最近一直在用MySQL,所以分享一下现在这套开发工具. SQLyog:链接:http://pan.baidu.com/s/1bLq2OA 密码:h5bj 注册信息用户名:yunjian注册码:81f4 ...

  9. web设计_6_图片/标题/说明文字布局

    这个web中常见的单元布局,最好的布局方式就是利用float布局. 其中有个很关键的问题是需要清浮动.子集浮动是无法撑开父级的高度. 目前较完善的清浮动解决方案:在浮动的父级上添加.clear,达到清 ...

  10. Split函数的使用

    Split函数,用来返回一个下标从零开始的一维数组,如下举例说明 1.split(' '),''号中间是空格 def break_words(stuff):    """ ...