//深入视频没下载完成没看,直接拿老师的代码贴上来了
//相应的有CommonHelper,将程序大多UI窗口用到的方法放到里面去。
//后话:这里有三个版本的SqlHelper
第一个版本只能传递”sql语句”参数,简单,但无法抵挡sql注入攻击
第二个版本还可以传递SqlParameter数组参数,即可以传递不确定个数的参数进来(当然第一个参数必须确定得是sql语句参数)。但在使用过程中比较麻烦,比较给参数New一个SqlParameter对象存入参数值。
第三个版本在第二个版本的基础上,是SqlHelper使用变得简单,可以直接传入数值,而不是SqlParameter对象。主要应用这个params咚咚,没深入学过C#,不懂这个咚咚,说是长度可变变量。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Configuration;
usingSystem.Data.SqlClient;
usingSystem.Data;
namespaceADONET2
{
classSqlHelper
{
privatestaticstringconnStr=ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
//封装方法原则:把不变的放到方法中,把变化的放到参数中
////publicstaticintExecuteNonQuery(stringsql)
////{
////using(SqlConnectionconn=newSqlConnection(connStr))
////{
////conn.Open();
////using(SqlCommandcmd=conn.CreateCommand())
////{
////cmd.CommandText=sql;
////returncmd.ExecuteNonQuery();
////}
////}
////}
////publicstaticobjectExecuteScalar(stringsql)
////{
////using(SqlConnectionconn=newSqlConnection(connStr))
////{
////conn.Open();
////using(SqlCommandcmd=conn.CreateCommand())
////{
////cmd.CommandText=sql;
////returncmd.ExecuteScalar();
////}
////}
////}
//////只用来执行查询结果比较少的sql
////publicstaticDataTableExecuteDataTable(stringsql)
////{
////using(SqlConnectionconn=newSqlConnection(connStr))
////{
////conn.Open();
////using(SqlCommandcmd=conn.CreateCommand())
////{
////cmd.CommandText=sql;
////SqlDataAdapteradapter=newSqlDataAdapter(cmd);
////DataSetdataset=newDataSet();
////adapter.Fill(dataset);
////returndataset.Tables[0];
////}
////}
////}
//第二版
//publicstaticintExecuteNonQuery(stringsql,SqlParameter[]parameters)
//{
//using(SqlConnectionconn=newSqlConnection(connStr))
//{
//conn.Open();
//using(SqlCommandcmd=conn.CreateCommand())
//{
//cmd.CommandText=sql;
////foreach(SqlParameterparaminparameters)
////{
////cmd.Parameters.Add(param);
////}
//cmd.Parameters.AddRange(parameters);
//returncmd.ExecuteNonQuery();
//}
//}
//}
//publicstaticobjectExecuteScalar(stringsql,SqlParameter[]parameters)
//{
//using(SqlConnectionconn=newSqlConnection(connStr))
//{
//conn.Open();
//using(SqlCommandcmd=conn.CreateCommand())
//{
//cmd.CommandText=sql;
//cmd.Parameters.AddRange(parameters);
//returncmd.ExecuteScalar();
//}
//}
//}
////只用来执行查询结果比较少的sql
//publicstaticDataTableExecuteDataTable(stringsql,SqlParameter[]parameters)
//{
//using(SqlConnectionconn=newSqlConnection(connStr))
//{
//conn.Open();
//using(SqlCommandcmd=conn.CreateCommand())
//{
//cmd.CommandText=sql;
//cmd.Parameters.AddRange(parameters);
//SqlDataAdapteradapter=newSqlDataAdapter(cmd);
//DataSetdataset=newDataSet();
//adapter.Fill(dataset);
//returndataset.Tables[0];
//}
//}
//}
//第三版:使用长度可变参数来简化
publicstaticintExecuteNonQuery(stringsql,paramsSqlParameter[]parameters)
{
using(SqlConnectionconn=newSqlConnection(connStr))
{
conn.Open();
using(SqlCommandcmd=conn.CreateCommand())
{
cmd.CommandText=sql;
//foreach(SqlParameterparaminparameters)
//{
//cmd.Parameters.Add(param);
//}
cmd.Parameters.AddRange(parameters);
returncmd.ExecuteNonQuery();
}
}
}
publicstaticobjectExecuteScalar(stringsql,paramsSqlParameter[]parameters)
{
using(SqlConnectionconn=newSqlConnection(connStr))
{
conn.Open();
using(SqlCommandcmd=conn.CreateCommand())
{
cmd.CommandText=sql;
cmd.Parameters.AddRange(parameters);
returncmd.ExecuteScalar();
}
}
}
//只用来执行查询结果比较少的sql
publicstaticDataTableExecuteDataTable(stringsql,paramsSqlParameter[]parameters)
{
using(SqlConnectionconn=newSqlConnection(connStr))
{
conn.Open();
using(SqlCommandcmd=conn.CreateCommand())
{
cmd.CommandText=sql;
cmd.Parameters.AddRange(parameters);
SqlDataAdapteradapter=newSqlDataAdapter(cmd);
DataSetdataset=newDataSet();
adapter.Fill(dataset);
returndataset.Tables[0];
}
}
}
}
}