牛腩之SQLhelper整理

      前言:牛腩里面,重新为我们整理了一下SQLhelper整理过程,我突然明白了很多,之前在机房重构中单纯照着别人敲的句子是什么意思,他最终重构完的SQLhelper如下,我下面一句话一句话整理一下啊,否则我的脑子似乎好像乱乱的,跟一群蚂蚁一样乱窜。这里以执行带参数的SQL查询语句为例

第一步:public class SQLHelper
          {

        private SqlConnection conn = null;
        private SqlCommand cmd = null;
        private SqlDataReader sdr = null;

        public SQLHelper()
        {
            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
            
            conn = new SqlConnection(connStr);
        }
      
第二步 private SqlConnection GetConn()
          {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            return conn;
           }
 第三步 public DataTable ExecuteQuery2(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;

          }

第一步:先实例化SqlConnection,SqlCommand, SqlDataReader 
 SqlConnection conn = null
  SqlCommand cmd = null;
  SqlDataReader sdr = null;

  这里这个  public SQLHelper()是为了将建立连接数据库提取出来,作为公共部分,每次执行这个执行带参数的SQL查询语句的时候,都会自动跳到这里,建立数据库连接。

第二步:

     定义的SQLconnection类型的GetConn方法,里面判断数据库连接的状态,如果是关闭的那么就打开,返回一个SQLconnection类型的conn实例。

第三步:

   <1>设置的是三个参数,string类型的cmdText,SqlParameter类型的 paras,以及CommandType的 ct,他们作为参数在D层里被赋好了值,传进来

<2>之后,先是实例化一个datatable类型的表dt

      cmd = new SqlCommand(cmdText,GetConn());在理解这句话之前首先要明白,这句话就和我之前在机房重构里面的      SQLcommand cmd = newSQLcommand(cmdText,GetConn())是一个意思,只不过提前定义好了。

 这个SQLcommand 初始化具有查询文本和 System.Data.SqlClient.SqlConnection 的 System.Data.SqlClient.SqlCommand类的新实例。
         参数: cmdText:查询的文本。
                connection:一个 System.Data.SqlClient.SqlConnection,它表示到 SQL Server 实例的连接。cmdText,GetConn()

cmd.CommandType = ct  是为了选择类型,我们要执行的是一个SQL语句呢,还是一个存储过程呢,还是其他类型的呢?

 cmd.Parameters.AddRange(paras); 这句话里的Parameters是获取System.Data.SqlClient.SqlParameterCollection,返回一个SQL语句或者存储过程的参数。而AddRange则是添加参数,添加的正好是上面那个类型的值,即sqlparmater的值。这样就把参数传进来。

<3>using里面,给SqlDataReader 类型的sdr赋值,然后让datatable类型的dt表加载sdr ,最后返回数据表dt,这样就完成了数据的操作。



总结:这次我理解的还是没有太深,但是理解是一步步加油的,所以必须好好的思考。加油!


猜你喜欢

转载自blog.csdn.net/xiewanru/article/details/79518598