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数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
随机推荐
- k8s学习 - 概念 - Pod
k8s学习 - 概念 - Pod 这篇继续看概念,主要是 Pod 这个概念,这个概念非常重要,是 k8s 集群的最小单位. 怎么才算是理解好 pod 了呢,基本上把 pod 的所有 describe ...
- 对于Typora(markdown)的基本使用
对于刚开始使用该软件,应该在熟悉基本的markdown语法的基础上,再进行快捷键的使用! 标题 (快捷键:ctrl + 数字) 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 ###### ...
- 0x31 prime distance(质数)
题目描述: 给定两个整数L和U,你需要在闭区间[L,U]内找到距离最接近的两个相邻质数C1和C2(即C2-C1是最小的),如果存在相同距离的其他相邻质数对,则输出第一对. 同时,你还需要找到距离最远的 ...
- [原创]MySQL数据库查询和LVM备份还原学习笔记记录
一.查询语句类型: 1)简单查询 2)多表查询 3)子查询 4)联合查询 1)简单查询: SELECT * FROM tb_name; SELECT field1,field2 FROM tb_nam ...
- jQuery - parents() 获得最近的祖先元素方法
答案 : parents()[0] <div class="pg-ins layer p_close"> <div class="sign_con&qu ...
- [POJ 2888]Magic Bracelet[Polya Burnside 置换 矩阵]
也许更好的阅读体验 \(\mathcal{Description}\) 大意:给一条长度为\(n\)的项链,有\(m\)种颜色,另有\(k\)条限制,每条限制为不允许\(x,y\)颜色连在一起.要求有 ...
- 一位 iOS 大牛的 BAT面试心得与经验总结,送给正在迷茫 的你!
前言: 目前形势,参加到 iOS 队伍的人是越来越多,可以说是已经达到了供过于求的地步了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,之前实习的时候就想着写一篇面经,后来忙就给忘了, ...
- linux初学者-NFS网络文件系统篇
linux初学者-NFS网络文件系统篇 在上一篇的SAMBA篇中介绍了linux系统和windows系统之间共用的网络文件系统CIFS,主要用于客户端是windows的情况.在linux系统之间,所用 ...
- @ConfigurationProperties 注解使用姿势,这一篇就够了
在编写项目代码时,我们要求更灵活的配置,更好的模块化整合.在 Spring Boot 项目中,为满足以上要求,我们将大量的参数配置在 application.properties 或 applicat ...
- Python解释器安装教程和环境变量配置
Python解释器安装教程和环境变量配置 Python解释器安装 登录Python的官方网站 https://www.python.org/ 进行相应版本的下载. 第一步:根据电脑系统选择软件适 ...