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[];
- }
- /// <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#)的更多相关文章
- C# ACCESS数据库操作类
这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下! usi ...
- C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]
原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using Sy ...
- C#---数据库访问通用类、Access数据库操作类、mysql类 .
//C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System. ...
- 一个基于ASP.NET(C#)的ACCESS数据库操作类
using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...
- C# 动软生成器对应的Access数据库操作类DbHelperOleDb
using System;using System.Collections;using System.Collections.Specialized;using System.Data;using S ...
- MySQL数据库操作类(PHP实现,支持连贯操作)
<?php /** * Author: suvan * CreateTime: 2018/2/27 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数) ...
- Oracle数据库操作类及连接方法
创建DataBaseAccess引用库下面包括DBConnectionString.cs,DBType.cs ,SysName.cs 三个类 DBConnectionString: using Sys ...
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- Android打造属于自己的数据库操作类。
1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
随机推荐
- 深入学习Spring框架(四)- 事务管理
1.什么是事务? 事务(Transaction)是一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位.事务是为了保证数据库的完整性.例如:A给B转账,需 ...
- Spring Boot微服务电商项目开发实战 --- 多环境部署配置、端口号统一配置及Dubbo提供者消费者实现
昨天已经搭建好了SpringBoot基于Maven的基础父子级项目,今天开始进入项目分模块及分布式实现.首先我们基于昨天的项目,在父级工程下建lyn-sys,lyn-customer,lyn-good ...
- 利用stub技术进行单元测试
待测试类:WebClient: import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConne ...
- Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现
Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现 一.漏洞描述 该漏洞是由于tomcat CGI将命令行参数传递给Win ...
- C#2.0新增功能06 协变和逆变
连载目录 [已更新最新开发文章,点击查看详细] 在 C# 中,协变和逆变能够实现数组类型.委托类型和泛型类型参数的隐式引用转换. 协变保留分配兼容性,逆变则与之相反. 以下代码演示分配兼容性.协 ...
- vijos p1484 ISBN号码
#include<iostream>#include<string>#include<cctype>using namespace std;int main() { ...
- Java 常见面试题整理
操作系统 说一下线程和进程,它们的区别 同步和异步的区别 阻塞和非阻塞的区别 操作系统中死锁的四个必要条件 mmap和普通文件读写的区别,mmap的注意点 CPU密集型和IO密集型的区别 Linux ...
- MySQL图形工具SQLyog破解版
最近一直在用MySQL,所以分享一下现在这套开发工具. SQLyog:链接:http://pan.baidu.com/s/1bLq2OA 密码:h5bj 注册信息用户名:yunjian注册码:81f4 ...
- web设计_6_图片/标题/说明文字布局
这个web中常见的单元布局,最好的布局方式就是利用float布局. 其中有个很关键的问题是需要清浮动.子集浮动是无法撑开父级的高度. 目前较完善的清浮动解决方案:在浮动的父级上添加.clear,达到清 ...
- Split函数的使用
Split函数,用来返回一个下标从零开始的一维数组,如下举例说明 1.split(' '),''号中间是空格 def break_words(stuff): """ ...