OLEDB SqlHelper
提供了很强大的基于SQL,DataObject(DataSet,DataReader)接口的快速访问数据库的
方法,并且同Configuration Application Block相结合,非常之灵活。但是灵活的同时也
增加了学习的难度和配置的复杂度。
在平常编写系统过程中,我也积累了一套SqlHelper,暂时是基于OLEDB(Connetcion).
因为它比较灵活,SQL 2000也能使用。
我的SqlHelper是轻量级的,仿Data Access Application Block的代码库。提供非常友好
的接口(不是基于ORM级别的).
下面附上相关代码,供大家学习,参考。欢迎提出修改意见:
using System;
using System.Configuration;
using System.Data;
using System.Data.OleDb;
namespace MyLib.Data
{
public sealed class CDBConn
{
// Methods
public CDBConn()
{
this.m_bIsInTransaction = false;
this.m_Timeout = 30;
this.m_objConn = new OleDbConnection(ConfigurationSettings.AppSettings["ConnectString"]);
this.m_objConn.Open();
}
public CDBConn(bool bOpenNow)
{
this.m_bIsInTransaction = false;
this.m_Timeout = 30;
this.m_objConn = new OleDbConnection(ConfigurationSettings.AppSettings["ConnectString"]);
if (bOpenNow)
{
this.m_objConn.Open();
}
}
public CDBConn(string strConnectionString)
{
this.m_bIsInTransaction = false;
this.m_Timeout = 30;
this.m_objConn = new OleDbConnection(strConnectionString);
this.m_objConn.Open();
}
public CDBConn(string strConnectionString, bool bOpenNow)
{
this.m_bIsInTransaction = false;
this.m_Timeout = 30;
this.m_objConn = new OleDbConnection(strConnectionString);
if (bOpenNow)
{
this.m_objConn.Open();
}
}
public void BeginTransaction()
{
if (!this.m_bIsInTransaction)
{
this.m_objCommand = new OleDbCommand();
this.m_objCommand.Connection = this.m_objConn;
this.m_objTransaction = this.m_objConn.BeginTransaction();
if (this.m_Timeout >= 30)
{
this.m_objCommand.CommandTimeout = this.m_Timeout;
}
this.m_objCommand.Transaction = this.m_objTransaction;
this.m_bIsInTransaction = true;
}
}
public void Close()
{
if (this.m_objConn.State != ConnectionState.Closed)
{
this.m_objConn.Close();
}
}
public void Commit()
{
if (this.m_bIsInTransaction)
{
this.m_objTransaction.Commit();
this.m_bIsInTransaction = false;
this.m_objCommand.Dispose();
}
}
public void Dispose()
{
if (this.m_objConn.State != ConnectionState.Closed)
{
this.m_objConn.Close();
}
this.m_objConn.Dispose();
}
public DataSet ExecuteDataSet(string strSQL)
{
DataSet set1 = new DataSet();
OleDbCommand command1 = new OleDbCommand(strSQL, this.m_objConn);
if (this.m_Timeout >= 30)
{
command1.CommandTimeout = this.m_Timeout;
}
OleDbDataAdapter adapter1 = new OleDbDataAdapter(command1);
adapter1.Fill(set1);
command1.Dispose();
adapter1.Dispose();
return set1;
}
public DataSet ExecuteDataSet(string strSQL, string strTable)
{
DataSet set1 = new DataSet();
OleDbCommand command1 = new OleDbCommand(strSQL, this.m_objConn);
if (this.m_Timeout >= 30)
{
command1.CommandTimeout = this.m_Timeout;
}
OleDbDataAdapter adapter1 = new OleDbDataAdapter(command1);
adapter1.Fill(set1, strTable);
command1.Dispose();
adapter1.Dispose();
return set1;
}
public OleDbDataReader ExecuteReader(string strSQL)
{
OleDbCommand command1 = new OleDbCommand(strSQL, this.m_objConn);
if (this.m_Timeout >= 30)
{
command1.CommandTimeout = this.m_Timeout;
}
OleDbDataReader reader1 = command1.ExecuteReader();
command1.Dispose();
return reader1;
}
public void ExecuteSQL(string strSQL)
{
if (!this.m_bIsInTransaction)
{
OleDbCommand command1 = new OleDbCommand(strSQL, this.m_objConn);
if (this.m_Timeout >= 30)
{
command1.CommandTimeout = this.m_Timeout;
}
command1.ExecuteNonQuery();
command1.Dispose();
}
else
{
this.m_objCommand.CommandText = strSQL;
this.m_objCommand.ExecuteNonQuery();
}
}
public int FillDataSet(ref DataSet objDataSet, string strSQL)
{
OleDbCommand command1 = new OleDbCommand(strSQL, this.m_objConn);
if (this.m_Timeout >= 30)
{
command1.CommandTimeout = this.m_Timeout;
}
OleDbDataAdapter adapter1 = new OleDbDataAdapter(command1);
int num1 = adapter1.Fill(objDataSet);
command1.Dispose();
adapter1.Dispose();
return num1;
}
public int FillDataSet(ref DataSet objDataSet, string strSQL, string strTable)
{
OleDbCommand command1 = new OleDbCommand(strSQL, this.m_objConn);
if (this.m_Timeout >= 30)
{
command1.CommandTimeout = this.m_Timeout;
}
OleDbDataAdapter adapter1 = new OleDbDataAdapter(command1);
int num1 = adapter1.Fill(objDataSet, strTable);
command1.Dispose();
adapter1.Dispose();
return num1;
}
~CDBConn()
{
}
public bool Lock(string[] strArrTableName)
{
return true;
// return this.m_objSync.Lock(strArrTableName);
}
public void Open()
{
if (this.m_objConn.State != ConnectionState.Open)
{
this.m_objConn.Open();
}
}
public void Rollback()
{
if (this.m_bIsInTransaction)
{
this.m_objTransaction.Rollback();
this.m_bIsInTransaction = false;
this.m_objCommand.Dispose();
}
}
public void Update(string strSelectSQL, DataSet objDataSet)
{
OleDbDataAdapter adapter1;
OleDbCommandBuilder builder1;
if (!this.m_bIsInTransaction)
{
OleDbCommand command1 = new OleDbCommand(strSelectSQL, this.m_objConn);
if (this.m_Timeout >= 30)
{
command1.CommandTimeout = this.m_Timeout;
}
adapter1 = new OleDbDataAdapter(command1);
builder1 = new OleDbCommandBuilder(adapter1);
adapter1.InsertCommand = builder1.GetInsertCommand();
adapter1.DeleteCommand = builder1.GetDeleteCommand();
adapter1.UpdateCommand = builder1.GetUpdateCommand();
adapter1.Update(objDataSet);
builder1.Dispose();
command1.Dispose();
adapter1.Dispose();
}
else
{
adapter1 = new OleDbDataAdapter(this.m_objCommand);
builder1 = new OleDbCommandBuilder(adapter1);
adapter1.InsertCommand = builder1.GetInsertCommand();
adapter1.DeleteCommand = builder1.GetDeleteCommand();
adapter1.UpdateCommand = builder1.GetUpdateCommand();
adapter1.Update(objDataSet);
builder1.Dispose();
adapter1.Dispose();
}
}
// Properties
public ConnectionState State
{
get
{
return this.m_objConn.State;
}
}
public int Timeout
{
get
{
return this.m_Timeout;
}
set
{
if (value < 1)
{
this.m_Timeout = 1;
}
else
{
this.m_Timeout = value;
}
}
}
// Fields
private bool m_bIsInTransaction;
private OleDbCommand m_objCommand;
private OleDbConnection m_objConn;
private OleDbTransaction m_objTransaction;
private int m_Timeout;
}
}
OLEDB SqlHelper相关推荐
- 一步步写自己SqlHelper类库(五):Command对象
1.Command对象基础 当我们使用Connection对象里面的方法打开数据库后,要查询自己所需的数据或对数据库的内容进行增删改时,Command对象就派上用场了! MSDN定义:建立与数据源的连 ...
- SQLHELPER C#
个人开发: <appSettings> <add key="conindex" value="1"/> <add key= ...
- ACCESS数据库C#操作类(SQLHELPER修改版)——转自网上
ACCESS数据库C#操作类(SQLHELPER修改版) 这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所 ...
- 一步一步写自己的SqlHelper类库
前言: 一开始不懂SqlHelper是什么,以为是新东西.第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码 ...
- oledb读不到dbf文件内容
最近在处理一批VFP的数据库,使用OleDB方式读取一直很正常,前两天突然碰到一张表怎么也读不出数据来,害我瞎忙了一整天,在研究了DBF文件结构后发现记录前的0x20位置存储的是0x2A. 一查才知道 ...
- 从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法...
注意,64位系统,用64位的补丁文件; https://www.cnblogs.com/A2008A/articles/2438962.html 操作系统:使用的是64位的Windows Server ...
- net通过oledb 和ibm自带连接方式,连接db2数据库出错
第一种通过ibm方式连接 DataSet ds = new DataSet(); OleDbConnection cn = new OleDbConnection ...
- one pragmatical sqlhelper
namespace ConsoleApplication2 {using System;using System.Collections.Generic;using System.Linq;using ...
- C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库
这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数 ...
- SQLserver数据库操作帮助类SqlHelper
1 SqlHelper源码 using System; using System.Data; using System.Xml; using System.Data.SqlClient; using ...
最新文章
- Lesson11 vSphere VUM
- GIF发明者感染新冠后去世,没有他就没有表情包
- Nginx http keepalive提升链接效率
- html 5 gif手机版,动画GIF在HTML5画布
- 『设计模式』小伙你的穿搭很潮!--装饰者模式
- docker pull 从仓库拉取镜像
- 清华北大的学子们都关注什么样公众号?
- 国服服务器_伊丁天堂国服|服务器类型建议收集
- Python3 输入和输出
- gdt描述_GDT全局描述符表
- SQL Server 常用函数总结
- Java Lambda 映射 map
- Euler法解微分方程
- 一张纸厚度是多少毫米_一本书的厚度大约是多少,一张纸的厚度大约是十分之一毫米,一本书...
- 分布电容和杂散电容_分布电容
- 大数据:阿里数据仓库建模及管理体系OneData什么是阿里onedata
- IOS开发教程第一季之02UI进阶day4合并IOS学习015--Segue小专题、沙盒存储小专题、归档/解档、TabBarController、App主流UI框架结构
- video视频多个循环播放
- 51单片机c语言相位计,相位计.doc
- 一文搞清楚码元速率(波特率)和比特速率(比特率)的区别
热门文章
- HDU 3341 Lost's revenge (AC自动机 + DP + 变进制/hash)题解
- 阿里面试题,深入理解Java类加载机制
- Java操作Linuxshell并且获取返回值
- [struts2学习笔记] 第五节 编写struts2的action代码
- 《Linux内核分析》 week6作业-Linux内核fork()系统调用的创建过程
- C#实现不安装Oracle客户端访问远程服务器数据
- sql中update多表处理
- [USACO 1.5.1]数字金字塔
- apache tomcat 6集群负载和session复制(转)
- Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)