private SqlConnection conn = null;//打开数据库的链接
private SqlCommand cmd = null;//对数据库执行一个T-sql语句或存储过程
private SqlDataReader sdr = null;//从数据库只读
public SqlHelper()
{
string connStr = ConfigurationManager.AppSettings["connStr"];
//Configuration提供对客户端应用程序配置文件的访问。
conn = new SqlConnection(connStr);//创建数据库连接
}
private SqlConnection GetConn()//判断数据库的链接
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return conn;
}
/// <summary>
/// 执行不带参数的查询SQL语句或存储过程
/// </summary>
/// <param name="cmdText">查询SQL语句或存储过程</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText, CommandType ct)
{
DataTable dt = new DataTable();
//cmdText查询的文本,getConn是上边的一个sqlconnection 它表示到sql server的链接
cmd = new SqlCommand(cmdText, GetConn());
//它的作用就是如何解释CommandText属性,commandtext就是指的是具体的什么指令
//(SQL,或者什么存储过程)
cmd.CommandType = ct;
//ExecuteReader(CommandBehavior)将CommandText发送到Connection,
//并使用CommandBehavior值之一生成SqlDataReader
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
//填充DataTable使用所提供的数据源中的值DataReader
dt.Load(sdr);
}
//返回的是一个表
return dt;
}
/// <summary>
/// 执行带参数的查询SQL语句或存储过程
/// </summary>
/// <param name="cmdText">查询SQL语句或存储过程</param>
/// <param name="paras">参数集合</param>
/// <param name="ct">命令类型</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmdText,SqlParameter[] paras,CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
/// <summary>
/// 执行不带参数的的增删改SQL语句或者存储过程
/// </summary>
/// <param name="cmdText">增删改查SQL</param>
/// <param name="ct">命令类型</param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string cmdText, CommandType ct)
{
int res;
try
{
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
res = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
}
return res;
}
///<summary>
/// 执行带参数的增删改SQL语句或存储过程
/// </summary>
/// <param name="cmdText">增删改查SQL</param>
/// <param name="paras">要查询的参数</param>>
/// <param name="ct">命令类型</param>
/// <returns>返回受影响的行数</returns>
public int ExecuteNonQuery(string cmdText, SqlParameter[] paras, CommandType ct)
{
int res;
using (cmd = new SqlCommand(cmdText, GetConn()))
{
cmd.CommandType = ct;
//将参数传入
cmd.Parameters.AddRange(paras);
res = cmd.ExecuteNonQuery();
}
return res;
}