黑马程序员技术交流社区
标题: 如何正确理解和使用SqlHelper [打印本页]
作者: 醒梦 时间: 2013-12-20 12:31
标题: 如何正确理解和使用SqlHelper
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);
}
作者: 许庭洲 时间: 2013-12-21 09:38
值得学习ing!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |