using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; namespace DAL { /// <summary>
/// 数据层 - 数据库 操作类 /// </summary>
internal class SqlHelper { //获得配置文件的连接字符串
public readonly static string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; #region 01.查询数据表 static DataTable ExecuteDataTable(string strSql, params SqlParameter[] paras)
/// <summary>
/// 查询数据表 /// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="paras">参数数组</param>
/// <returns>数据表</returns>
public static DataTable GetDataTable(string strSql, params SqlParameter[] paras) { //创建数据库连接对象
SqlConnection conn = new SqlConnection(strConn); //创建适配器对象(sql命令,连接通道)
SqlDataAdapter da = new SqlDataAdapter(strSql, conn); //为适配器添加参数
da.SelectCommand.Parameters.AddRange(paras); //创建数据表对象
DataTable dt = new DataTable(); //适配器 读取数据库,并将查询的结果 装入程序的 dt里
da.Fill(dt); //返回数据表
return dt; } #endregion
#region 02.执行非查询语句 int ExcuteNonQuery(string strSql, params SqlParameter[] paras)
/// <summary>
/// 执行非查询语句) /// </summary>
/// <param name="strSql">sql语句</param>
/// <param name="paras">参数数组</param>
/// <returns>受影响的行数</returns>
public static int ExcuteNonQuery(string strSql, params SqlParameter[] paras) { int res = -1; //创建连接通道
using (SqlConnection conn = new SqlConnection(strConn)) { //创建命令对象(sql语句,连接通道)
SqlCommand cmd = new SqlCommand(strSql, conn); //添加参数
cmd.Parameters.AddRange(paras); conn.Open(); //执行非查询SQL命令
res = cmd.ExecuteNonQuery(); } return res; } #endregion
#region 03.执行多条非查询语句 public static int ExcuteNonQuerys(string[] strSqls, SqlParameter[][] parasArr)
/// <summary>
/// 执行多条非查询语句 /// </summary>
/// <param name="strSql">sql语句数组</param>
/// <param name="paras">参数二维数组</param>
/// <returns>受影响的行数</returns>
public static int ExcuteNonQuerys(string[] strSqls, SqlParameter[][] parasArr) { int res = 0; //创建连接通道
using (SqlConnection conn = new SqlConnection(strConn)) { //打开数据库连接
conn.Open(); //创建事务
SqlTransaction tran = conn.BeginTransaction(); //创建命令对象
SqlCommand cmd = conn.CreateCommand(); //为命令对象指定事务
cmd.Transaction = tran; try { //循环执行sql语句
for (int i = 0; i < strSqls.Length; i++) { //获得要执行的sql语句
string strSql = strSqls[i]; //为命令对象指定 此次执行的 sql语句
cmd.CommandText = strSql; //添加参数
if (parasArr.Length > i)//如果 参数2维数组的长度大于当前循环的下标
{ cmd.Parameters.AddRange(parasArr[i]);//将 交错数组 的第一个元素(其实也是一个数组,添加到参数集合中)
} res += cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } tran.Commit();//提交事务
} catch (Exception ex) { res = 0; tran.Rollback();//回滚事务
throw ex; } } re