【牛腩新闻发布系统】写SQlHelper

   

      之前写的SqlHelper 是理论上的知识,这次来自己制作一个SqlHelper
     
<span style="font-size:32px;"><span style="font-size:24px;"><span style="font-size:18px;">       /// <summary>
       /// 该方法执行传入的增删改SQL语句
       /// </summary>
       /// <param name="sql">要执行的SQL语句</param>
       /// <returns>返回更新的记录数</returns></span>
<span style="font-size:32px;">
     public int ExecuteNonQuery(string sql)   //要返回int类型,传入字符串类型的sql.
{
   string connStr=@"server=T;database=news;uid=sa;pwd=1";  //定义一个字符串,来连接数据库。
   SqlConnection conn =new SqlConnection(connStr);    // 实例化 SqlConnection ,开始连接数据库。
  conn.Open();  //打开连接
  
    SqlCommand cmd =new SqlCommand(sql,conn);   //实例化一个 SqlCommand,传递的是sql语句和连接的数据库。
   int res=cmd.ExecuteNonQuery();     //执行了命令(SQL语句)之后,返回一个int 值,来查看增删改了几条语句。
  conn.Close();   //执行了语句,返回了值,就可以关闭数据库了。

  Return res; //返回这个值,这样再调用这个sqlhelper之后,就直接得到的是res.

}
</span></span></span>


<span style="font-size:32px;"><span style="font-size:24px;"><span style="font-size:18px;">         /// <summary>
         /// 该方法执行传入的SQL查询语句
         /// </summary>
         /// <param name="sql">SQL查询语句</param>
         /// <returns></returns>
Public DataTable ExecuteQuery(string sql)  //同上面一样,不过这里返回的是DataTable表,传入的是string sql
{
	DataTable dt=new DataTable();   //要返回datatable,就要先实例化它,不能直接传
	String connStr=@"server=T;Database=news;uid=sa;pwd=1";   //依然是要定义连接数据库的语句。
	SqlConnection conn=new SqlConnecttion(connStr);  //依然要实例化一个连接语句,来传入刚才定义的connstr
	Conn.Open();  //打开数据库连接
	
	SqlCommand cmd=new  SqlCommand(sql,conn);  //打开一个数据库连接之后,接着就是用command命令,实例化。
	SqlDataReader sdr=cmd.ExecuteReader();   //要返回datatable就要先读出数据,用SqlDataReader方法。
	 dt.Load(sdr);  //将读回的数据放在dt中。
	Sdr.Close();  //把SqlDataReader关闭。注意,SqlConnection和SqlDataReader都要关闭,SqlCommand不用关闭,它只是个命令。
	Conn.Close();  //最后关闭连接。
	
	Return dt;  //返回dt.
	
	
}
</span></span></span>


  以上的sqlHelper语句还不是很精简,下面再来给它瘦身一下,把共同的代码写到一起,更高效的利用。

   首先,添加一个类,把一些重复的语句再写到一个公共的类里面:

     

     public SQLHelper()'初始打开数据库连接
        {
            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

            conn = new SqlConnection(connStr);
        }
      这里需要在web.config文件下写连接的数据库的信息

      再来一个判断类:如果数据库的状态是关闭的,那么就打开数据库。

  

private SqlConnection GetConn()
        {
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();           
            }

            return conn;
        }
       具体的查询方法,这里涉及到SQL注入的问题,所以用参数格式来编写,安全的保护代码不被SQL注入。

       

        /// <summary>
        /// 执行带参数的sql增删改语句
        /// </summary>
        /// <param name="sql">sql增删改语句</param>
        /// <param name="paras">参数集合</param>
        /// <returns></returns>

public int ExecuteNonQuery(string sql,SqlParameter []paras)
        {
            int res;
            using (cmd = new SqlCommand(sql,GetConn ()))
            {
                cmd.Parameters.AddRange(paras);
                res = cmd.ExecuteNonQuery();
            }
            return res;
        }

       下面的代码是把查询的sqlHelper语句精简了一下:

        

/// <summary>
        /// 该方法执行传入的SQL查询语句
        /// </summary>
        /// <param name="sql">SQL查询语句</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string sql)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(sql, GetConn());
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }

            return dt;
        }
      

      这里只是简单的SqlHelper语句,从之前的一点不懂,直接用,到现在能自己写一个SqlHelper语句,是在一点点进步的,有收获就要常总结,颗粒归仓。

你可能感兴趣的:(新闻,发布,SQLHelper,牛腩新闻发布系统)