再回首—SQLhelper的编写

原创 2016年05月30日 19:14:15

一、什么是SQLHelper

  SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是dbhelper.org开源的sqlhelper组件,优点是简洁,高性能,不仅仅支持sqlserver,同时支持sqlserver、oracle、access、Mysql数据库,也是一个开源项目,提供免费下载。

  SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。

  SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。

二、怎么写SQLhelper助手类

  SQLHelper分为四中情况:带参数的sql查询语句,带参数的增删改sql语句,不带参数的sql查询语句,sql增删改语句。看一下他们的代码(C#版) 

     ①  /// <summary>
        /// 执行不带参数的 增删改sql语句或存储过程
        /// </summary>
        /// <param name="cmdText"></param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText, CommandType ct)
        {
            int res;
            try
            {
                cmd = new SqlCommand(cmdText , GetConn());
                cmd.CommandType = ct;
                res = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                { 
                               conn.Close();
                }
            }
            return res;
        }

        /// <summary>
        /// 执行带参数的SQL增删改语句
        /// </summary>
        /// <param name="sql">sql增删改语句</param>
        /// <param name="paras">参数集合</param>
        /// <returns></returns>
       
        public int ExecuteNonQuery(string cmdText,SqlParameter[] paras,CommandType ct)
        {
            int res;
            using (cmd = new SqlCommand(cmdText , GetConn())) 
            {
                cmd.CommandType = ct;
                cmd.Parameters.AddRange(paras);
                res =cmd.ExecuteNonQuery ();
            }
            return res;
        }
  
   ② /// <summary>
        /// 该方法执行查询传入的sql查询语句或存储过程
        /// </summary>
        /// <param name="sql">命令类型</param>
        /// <returns></returns>
        public DataTable ExecuteQurey(string cmdText, CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }
     /// <summary>
     /// 执行带参数的SQL语句,或存储过程
     /// </summary>
     /// <param name="cmdText"></param>
     /// <param name="paras">sql查询语句</param></param>
     /// <param name="ct">命令类型</param>
     /// <returns></returns>
        public DataTable ExecuteQurey(string cmdText, SqlParameter[] paras,CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText , GetConn());
            cmd.CommandType = ct;
            cmd.Parameters.AddRange(paras);
            using (sdr = cmd.ExecuteReader(CommandBehavior .CloseConnection ))
            {
                dt.Load(sdr);
            }
            return dt;
        }

    }

三、总结

  前辈们的代码我们可以拿来直接用,但是我们必须知道该怎么用。C#版的sqlhelper就这么点东西。至于更深的用法,还希望大神赐教!如有错误欢迎指正,不胜感激。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JAVA基础再回首(九)——Object类、String类及其获取功能、转换功能、其他功能

JAVA基础再回首(九)——Object类、String类及其获取功能、转换功能、其他功能 七夕,你们要怎么过,反正我和代码过。(这么晚了,我还想和你们多闲聊两句) 女生最爱问男朋友什么问题...
  • m366917
  • m366917
  • 2016年08月08日 21:18
  • 1446

VB备忘录(7)类与对象--再回首

对象的引用 dim objvar   as object   ‘创建一个引用 dim objvar   as New   object   '创建一个引用 为啥后面有New呢?当一个对象是顶层对...

JAVA基础再回首(八)——多态、(成员、局部、匿名)内部类

JAVA基础再回首(八)——多态、(成员、局部、匿名)内部类 只有一条路不能选择——那就是放弃的路;只有一条路不能拒绝——那就是成长的路。...
  • m366917
  • m366917
  • 2016年08月05日 00:09
  • 1129

再回首,数据结构——字符串与数组的常见操作(链式存储,包含朴素匹配算法等)

最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。          希望这些能提供给初学者一些参考。 //鏈式存儲的數據結構 typedef struc...

再回首,数据结构——循环队列上的常见操作

最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。         希望这些能提供给初学者一些参考。 //循环队列的类型描述 #define MaxSiz...

再回首——行为型设计模式

行为型     设计模式被分成三大类,创建型,结构型,行为型。具体要阐述为什么这么分,这个问题,暂时解决不了,但是我们能做的是,可以掌握它,合理的运用它。对于行为型设计模式,记住:它侧重的是对“方法”...

Spring JdbcTemplate 查询方法中的RowMapper实现汇总_再回首_百度空间

实现一、在内部建立内联类实现class=hilite1>RowMapper接口    packagehysteria.contact.dao.impl;       importjava...

java回调再回首

一、什么是回调? 1、按调用来方式来分类,调用分三类,同步调用,异步调用和回调。 同步好理解,是一种阻塞式调用。 回调是一种双向调用。 而异步是非阻塞式调用。二...

再回首UML之下篇

接着我们上篇博客再回首UML之上篇说,在类图中有四种关系,关联、依赖、泛化、实现,接下来,我们来看看依赖,依赖--描述的是一种使用关系,她说明一个事物的规格说明的变化可能影响到他使用的另一个事物,反之...

再回首,数据结构——顺序表的常见算法

最近在复习数据结构,顺便看看大一的时候写的代码,看完之后比当初有了更加深刻的体会。                                                          ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:再回首—SQLhelper的编写
举报原因:
原因补充:

(最多只允许输入30个字)