//深入视频没下载完成没看,直接拿老师的代码贴上来了
//相应的有CommonHelper,将程序大多UI窗口用到的方法放到里面去。
//后话:这里有三个版本的SqlHelper
第一个版本只能传递”sql语句”参数,简单,但无法抵挡sql注入攻击
第二个版本还可以传递SqlParameter数组参数,即可以传递不确定个数的参数进来(当然第一个参数必须确定得是sql语句参数)。但在使用过程中比较麻烦,比较给参数New一个SqlParameter对象存入参数值。
第三个版本在第二个版本的基础上,是SqlHelper使用变得简单,可以直接传入数值,而不是SqlParameter对象。主要应用这个params咚咚,没深入学过C#,不懂这个咚咚,说是长度可变变量。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace ADONET2
{
class SqlHelper
{
private static string connStr = ConfigurationManager.ConnectionStrings["dbConnStr"].ConnectionString;
//封装方法原则:把不变的放到方法中,把变化的放到参数中
////public static int ExecuteNonQuery(string sql)
////{
//// using (SqlConnection conn = new SqlConnection(connStr))
//// {
//// conn.Open();
//// using (SqlCommand cmd = conn.CreateCommand())
//// {
//// cmd.CommandText = sql;
//// return cmd.ExecuteNonQuery();
//// }
//// }
////}
////public static object ExecuteScalar(string sql)
////{
//// using (SqlConnection conn = new SqlConnection(connStr))
//// {
//// conn.Open();
//// using (SqlCommand cmd = conn.CreateCommand())
//// {
//// cmd.CommandText = sql;
//// return cmd.ExecuteScalar();
//// }
//// }
////}
//////只用来执行查询结果比较少的sql
////public static DataTable ExecuteDataTable(string sql)
////{
//// using (SqlConnection conn = new SqlConnection(connStr))
//// {
//// conn.Open();
//// using (SqlCommand cmd = conn.CreateCommand())
//// {
//// cmd.CommandText = sql;
//// SqlDataAdapter adapter = new SqlDataAdapter(cmd);
//// DataSet dataset = new DataSet();
//// adapter.Fill(dataset);
//// return dataset.Tables[0];
//// }
//// }
////}
//第二版
//public static int ExecuteNonQuery(string sql,SqlParameter[] parameters)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// //foreach (SqlParameter param in parameters)
// //{
// // cmd.Parameters.Add(param);
// //}
// cmd.Parameters.AddRange(parameters);
// return cmd.ExecuteNonQuery();
// }
// }
//}
//public static object ExecuteScalar(string sql,SqlParameter[] parameters)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// cmd.Parameters.AddRange(parameters);
// return cmd.ExecuteScalar();
// }
// }
//}
////只用来执行查询结果比较少的sql
//public static DataTable ExecuteDataTable(string sql, SqlParameter[] parameters)
//{
// using (SqlConnection conn = new SqlConnection(connStr))
// {
// conn.Open();
// using (SqlCommand cmd = conn.CreateCommand())
// {
// cmd.CommandText = sql;
// cmd.Parameters.AddRange(parameters);
// SqlDataAdapter adapter = new SqlDataAdapter(cmd);
// DataSet dataset = new DataSet();
// adapter.Fill(dataset);
// return dataset.Tables[0];
// }
// }
//}
//第三版:使用长度可变参数来简化
public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
//foreach (SqlParameter param in parameters)
//{
// cmd.Parameters.Add(param);
//}
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
}
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);
return cmd.ExecuteScalar();
}
}
}
//只用来执行查询结果比较少的sql
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 adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}
}
}