最近看了MS的Enterprise Library ,里面有一套很强大的Data Access Application Block。
提供了很强大的基于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相关推荐

  1. 一步步写自己SqlHelper类库(五):Command对象

    1.Command对象基础 当我们使用Connection对象里面的方法打开数据库后,要查询自己所需的数据或对数据库的内容进行增删改时,Command对象就派上用场了! MSDN定义:建立与数据源的连 ...

  2. SQLHELPER C#

    个人开发: <appSettings>   <add key="conindex" value="1"/>   <add key= ...

  3. ACCESS数据库C#操作类(SQLHELPER修改版)——转自网上

    ACCESS数据库C#操作类(SQLHELPER修改版) 这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所 ...

  4. 一步一步写自己的SqlHelper类库

    前言: 一开始不懂SqlHelper是什么,以为是新东西.第一遍大量的查资料,在csdn上找到很多人写好的SqlHelper类,发现每个人写的很像,但又都不一样,找了一个能用的上的,敲了一遍别人的代码 ...

  5. oledb读不到dbf文件内容

    最近在处理一批VFP的数据库,使用OleDB方式读取一直很正常,前两天突然碰到一张表怎么也读不出数据来,害我瞎忙了一整天,在研究了DBF文件结构后发现记录前的0x20位置存储的是0x2A. 一查才知道 ...

  6. 从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法...

    注意,64位系统,用64位的补丁文件; https://www.cnblogs.com/A2008A/articles/2438962.html 操作系统:使用的是64位的Windows Server ...

  7. net通过oledb 和ibm自带连接方式,连接db2数据库出错

    第一种通过ibm方式连接        DataSet ds = new DataSet();             OleDbConnection cn = new OleDbConnection ...

  8. one pragmatical sqlhelper

    namespace ConsoleApplication2 {using System;using System.Collections.Generic;using System.Linq;using ...

  9. C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库

    这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数 ...

  10. SQLserver数据库操作帮助类SqlHelper

    1 SqlHelper源码 using System; using System.Data; using System.Xml; using System.Data.SqlClient; using ...

最新文章

  1. Lesson11 vSphere VUM
  2. GIF发明者感染新冠后去世,没有他就没有表情包
  3. Nginx http keepalive提升链接效率
  4. html 5 gif手机版,动画GIF在HTML5画布
  5. 『设计模式』小伙你的穿搭很潮!--装饰者模式
  6. docker pull 从仓库拉取镜像
  7. 清华北大的学子们都关注什么样公众号?
  8. 国服服务器_伊丁天堂国服|服务器类型建议收集
  9. Python3 输入和输出
  10. gdt描述_GDT全局描述符表
  11. SQL Server 常用函数总结
  12. Java Lambda 映射 map
  13. Euler法解微分方程
  14. 一张纸厚度是多少毫米_一本书的厚度大约是多少,一张纸的厚度大约是十分之一毫米,一本书...
  15. 分布电容和杂散电容_分布电容
  16. 大数据:阿里数据仓库建模及管理体系OneData什么是阿里onedata
  17. IOS开发教程第一季之02UI进阶day4合并IOS学习015--Segue小专题、沙盒存储小专题、归档/解档、TabBarController、App主流UI框架结构
  18. video视频多个循环播放
  19. 51单片机c语言相位计,相位计.doc
  20. 一文搞清楚码元速率(波特率)和比特速率(比特率)的区别

热门文章

  1. HDU 3341 Lost's revenge (AC自动机 + DP + 变进制/hash)题解
  2. 阿里面试题,深入理解Java类加载机制
  3. Java操作Linuxshell并且获取返回值
  4. [struts2学习笔记] 第五节 编写struts2的action代码
  5. 《Linux内核分析》 week6作业-Linux内核fork()系统调用的创建过程
  6. C#实现不安装Oracle客户端访问远程服务器数据
  7. sql中update多表处理
  8. [USACO 1.5.1]数字金字塔
  9. apache tomcat 6集群负载和session复制(转)
  10. Egret入门学习日记 --- 第八篇(书中 2.0~2.6节 内容)