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数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
随机推荐
- 基于SpringCloud的Microservices架构实战案例-架构拆解
自第一篇< 基于SpringCloud的Microservices架构实战案例-序篇>发表出来后,差不多有半年时间了,一直也没有接着拆分完,有如读本书一样,也是需要契机的,还是要把未完成的 ...
- [Haoi2016]放棋子 题解
4563: [Haoi2016]放棋子 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 440 Solved: 285[Submit][Status] ...
- python的@修饰符
‘@’引用已有的函数,对下面的函数进行修饰.引用函数必须放在修饰函数的上面,引用函数的返回值,返回给被修饰的函数 一个简单的栗子: def funA(fn): print('A') # 输出A fn( ...
- UVA297 四分树 Quadtrees 题解
题目链接: https://www.luogu.org/problemnew/show/UVA297 附几道推荐题目(先完成再食用此题效果更佳) https://www.luogu.org/probl ...
- Excel催化剂开源第2波-自动检测Excel的位数选择对应位数的xll文件安装
Excel插件的部署问题难倒了不了的用户,特别是VSTO的部署,用ExcelDna开发的xll文件部署方便,不挑用户机器环境,是其开发Excel插件的一大优势. 其开发出来的xll文件,最终还是需要考 ...
- 使用Mxnet基于skip-gram模型实现word2vect
1. 需求 使用skip-gram模式实现word2vect,然后在jaychou_lyrics.txt数据集上应用 jaychou_lyrics.txt数据集收录了周杰伦从第一张专辑到第十张专辑中的 ...
- Java创建线程的两个方法
Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...
- C语言数据类型及变量整理
数据类型 获取int的字节数大小方法 printf("int bytes:%d",sizeof(int)); 列表整理 类型 字节数 取值范围 char 1 [-128,127]= ...
- spark 源码分析之十一--Spark RPC剖析之TransportClient、TransportServer剖析
TransportClient类说明 先来看,官方文档给出的说明: Client for fetching consecutive chunks of a pre-negotiated stream. ...
- PyCharm字体大小调整
1.点击左上角File----settings----keymap----------搜索increase,选中,increase font size--------再选择enter mouse sh ...