SQLHelper

来源:互联网 发布:lol末日人工智能投票 编辑:程序博客网 时间:2024/06/05 19:05

前言

  小编在最近的学习过程中用到了SQLHelper,说起来,小编也是有点懒,虽然是用到了,但是也没有用明白,开始的时候也没有好好的研究,直到后来报错了,才下定决心好好好学习了解一下这个东西。下面先介绍一下SQLHelper是什么吧。

SQLHelper简介

  SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法。SqlHelper用于简化你重复的去写那些数据库连接(SqlConnection),SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
  SqlHelper简化了那些重复的数据库连接SqlConnection,SqlCommand,SqlDataReader等等。SqlHelper 封装过后通常是只需要给其中的方法传入一些参数如数据库连接字符串,SQL参数等,就可以访问数据库了,很方便。
  SqlHelper 类用于通过一组静态方法来封装数据访问功能。该类不能被继承或实例化,因此将其声明为包含专用构造函数的不可继承类。在 SqlHelper 类中实现的每种方法都提供了一组一致的重载。这提供了一种很好的使用 SqlHelper 类来执行命令的模式,同时为开发人员选择访问数据的方式提供了必要的灵活性。每种方法的重载都支持不同的方法参数,因此开发人员可以确定传递连接、事务和参数信息的方式。

遇到的问题

  我遇到的问题是发生在数据库插入数据的时候,能够在数据库的表中插入数据,但是插入数据之后还会报错,错误内容是这个:
错误
  看到这个错误以后我也没有什么头绪,然后我就开始各种调试,断点,逐语句,逐过程,最后发现错误是在我的SQLHelper里,在D层调用SQLHelper方法,然后返回了一个数据表
错误
  这是返回了一个数据表,但是并没有这个表干什么的呢?我不需要这个表啊,因为我前面不需要了,我只需要把原来的数据插入到数据库就可以了,所以,问题就出在了这里,既然问题找到了,那么小编就开始针对SQLHelper进行了一番查询,不查不知道,一查吓一跳,各种各样的方法全都出来了,小编中间还问了几个人,学习了解了一下,说实话,我原来并不知道有这么多的方法,我以为只需要一个就可以了,还是学艺不精惹得祸,下面就看看我查到了什么内容吧

SQLHelper的方法成员分类

  ExecuteNonQuery。此方法用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。
  ExecuteReader。此方法用于返回SqlDataReader对象,该对象包含由某一命令返回的结果集。
  ExecuteDataset。此方法返回DataSet对象,该对象包含由某一命令返回的结果集。
  ExecuteScalar。此方法返回一个值。该值始终是该命令返回的第一行的第一列。
  ExecuteXmlReader。此方法返回 FOR XML 查询的 XML 片段。
  除了这些公共方法外,SqlHelper 类还包含一些专用函数,用于管理参数和准备要执行的命令。不管客户端调用什么样的方法实现,所有命令都通过 SqlCommand 对象来执行。在 SqlCommand 对象能够被执行之前,所有参数都必须添加到 Parameters 集合中,并且必须正确设置 Connection、CommandType、CommandText 和 Transaction 属性。SqlHelper 类中的专用函数主要用于提供一种一致的方式,以便向 SQL Server 数据库发出命令,而不考虑客户端应用程序调用的重载方法实现。
  下面是小编所用的一个方法,仅供参考:

public static string connstring = System.Configuration.ConfigurationManager.AppSettings["ConnStr"];//接收来自配置文件的数据 
    // 执行非查询,返回受影响行数,异常返回-1;    public static bool ExceNonQuery(string sql, CommandType type, IDataParameter[] pars)    {        SqlConnection con = new SqlConnection(connstring);        SqlCommand com = new SqlCommand(sql, con);        if (pars != null && pars.Length > 0)        {            foreach (SqlParameter pp in pars)//把参数集全部加进去                com.Parameters.Add(pp);        }        try        {            con.Open();            int t = com.ExecuteNonQuery();            if (t > 0)            {                return true;            }            else                return false;        }        catch (Exception ) { return false; }        finally        {            com.Parameters.Clear();            com.Dispose();            con.Close();        }    }

D层调用的时候是这样的

 bool result = SqlHelper.ExceNonQuery(sql, CommandType.Text, sqlParams);

总结

  工欲善其事,必先利其器。SQLHelper可谓是一大利器了,所以还是要好好的理解和学习,现在还是在用别人的SQLHelper,但是以后肯定要自己写了,毕竟别人的东西肯定不能一直满足自己的需求的,如何自己去写呢?要学习站在巨人的肩膀上,前人已经为我们做了那么多的铺垫,我们怎么能不去锦上添花呢。

原创粉丝点击