A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 醒梦 中级黑马   /  2013-12-20 12:31  /  2316 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

namespace 自己编写SqlHelper
{
    class SqlHelper////写类的时候,尽量不使用Public修饰,这是一个封装的习惯
    {
        private static string connStr = System.Configuration.ConfigurationManager.AppSettings["SqlConnString"];
        //封装方法的原则:把不变的放在方法里,把变化的放在参数中
        //编写公用的方法
          ///////////////////简化版本,能精确判读除了传过来有Sql语句参数,参数数组长度是否为0///////////
        /////长度可变参数,这样可以判断串过来的参数是否匹配,精确找到自己所对应的方法,完美的结合了(只传Sql语句,参数数组为0;又传Sql语句,又传参数数组,还不用再调用的时候定义数组)了以上两种方式
        /////调用者如果不传,则数组长度为0params(必须放在最后一位,其他的都匹配完成,余下的都放在该数组)
        //ExecuteNonQuery :执行非查询语句,并返回受影响的行数;
        public static int ExecuteNonQuery(string sql, params SqlParameter[] paramenters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    //AddRange(数组名)整体添加参数
                    cmd.Parameters.AddRange(paramenters);
                    //对连接执行T-Sql非查询语句并返回受影响的行数
                    return cmd.ExecuteNonQuery();
                }
            }
        }
        //ExecuteScalar:执行查询语句,返回数据集的第一行第一列
        public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    //对连接执行T-Sql查询语句,并返回结果集的第一行第一列
                    return cmd.ExecuteScalar();
                }
            }
        }
        ////ExecuteDataTable:执行查询语句,返回数据集,存放在客户端
        //查询数据集不多的时候使用最合适,一般的系统数据集都不大
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                using (SqlCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    SqlDataAdapter sda = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    sda.Fill(ds);
                    return ds.Tables[0];
                }
            }
        }
界面后台代码如何调用:
//使用可变参数方法(传递Sql语句,参数数组长度为0
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            //不用长度可变参数,调用起来比较麻烦
            string pwd=(string)SqlHelper.ExecuteScalar("select UserPwd  from T_User where UserName='jinpeng'");//带不带参数使用的都是同一种方法,这里等于说是参数数组长度为0
            //string pwd = (string)SqlHelper.ExecuteScalar("select UserPwd  from T_User where UserName='jinpeng'", new SqlParameter[0]);
            MessageBox.Show(pwd);
        }
//使用可变参数方法(传递Sql语句,参数数组)
        private void button4_Click(object sender, RoutedEventArgs e)
        {
            
            string username = this.txt_UserName.Text.Trim();
            //string pwd=(string)SqlHelper.ExecuteScalar("select UserPwd from T_User where UserName=@name",new SqlParameter[]{new SqlParameter("name",username) });
            //使用可变参数,好处是,不用重新定义参数数组,自己赋值就OK
            string pwd=(string)SqlHelper.ExecuteScalar("select UserPwd from T_User where UserName=@name",new SqlParameter("name",username));
            MessageBox.Show("该用户的密码是:"+pwd);
        }

评分

参与人数 1技术分 +1 收起 理由
V_John + 1 笔记写的很好,不过啊,自己的笔记不要发到.

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马