using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace DAL
{
//写成静态类,当调用该类方法的时候不用在创建一个新对象
public static class SqlHelper
{
private static readonly string constr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;
/// <summary>
/// 执行Insert,delete,Update时返回受影响的行数
/// </summary>
/// <param name="sql"></param>
/// <param name="cmdType">SqlCommand命令类型(存储过程,T—Sql语句,等等)</param>
/// <param name="pms"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, CommandType cmdType, params SqlParameter[] pms)
{
using (SqlConnection con=new SqlConnection(constr))
{
using (SqlCommand cmd=new SqlCommand(sql,con))
{
cmd.CommandType = cmdType;
if (pms!=null)
{
cmd.Parameters.AddRange(pms);
}
con.Open();
return cmd.ExecuteNonQuery();
}
}
}
/// <summary>
/// 返回查询的首行首列
/// </summary>
/// <param name="sql"></param>
/// <param name="cmdType">SqlCommand命令类型(存储过程,T—Sql语句,等等)</param>
/// <param name="pms"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql, CommandType cmdType, params SqlParameter[] pms)
{
using (SqlConnection con=new SqlConnection(constr))
{
using (SqlCommand cmd=new SqlCommand(sql,con))
{
cmd.CommandType = cmdType;
if (pms!=null)
{
cmd.Parameters.AddRange(pms);
}
con.Open();
return cmd.ExecuteScalar();
}
}
}
/// <summary>
/// 执行select语句时返回查询的数据
/// </summary>
/// <param name="sql"></param>
/// <param name="cmdType">SqlCommand命令类型(存储过程,T—Sql语句,等等)</param>
/// <param name="pms"></param>
/// <returns></returns>
public static SqlDataReader ExecuDataReader(string sql, CommandType cmdType, params SqlParameter[] pms)
{
//因为ExecuteReader是一行一行的读,所以必须保证con是连接的,因此这里不能用using自动释放资源
SqlConnection con = new SqlConnection(constr);
try
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
cmd.CommandType = cmdType;
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
con.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);//当ExecuteReader方法发生异常时,CommandBehavior.CloseConnection会关闭连接
}
}
catch (Exception)
{
if (con!=null)
{
con.Close();
con.Dispose();
}
throw;
}
}
public static DataTable ExecuteDataTable(string sql, CommandType cmdType, params SqlParameter[] pms)
{
SqlDataAdapter da = new SqlDataAdapter(sql,constr);
da.SelectCommand.CommandType = cmdType;
if (pms!=null)
{
da.SelectCommand.Parameters.AddRange(pms);
}
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
}