namespace 自己编写SqlHelper类 { class SqlHelper////写类的时候,尽量不使用Public修饰,这是一个封装的习惯 { private static string connStr = System.Configuration.ConfigurationManager.AppSettings["SqlConnString"]; //封装方法的原则:把不变的放在方法里,把变化的放在参数中 //编写公用的方法 ///////////////////简化版本,能精确判读除了传过来有Sql语句参数,参数数组长度是否为0/////////// /////长度可变参数,这样可以判断串过来的参数是否匹配,精确找到自己所对应的方法,完美的结合了(只传Sql语句,参数数组为0;又传Sql语句,又传参数数组,还不用再调用的时候定义数组)了以上两种方式 /////调用者如果不传,则数组长度为0,params(必须放在最后一位,其他的都匹配完成,余下的都放在该数组) //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); }
|