今天对SQLHelper有了更深入的认识。
public class SQLHelper//数据库助手类
{
private SqlConnection conn = null;//开头先定义连接,初始为空
private SqlCommand cmd = null;//命令,初始为空
private SqlDataReader sdr = null;//reader,初始为空
public SQLHelper()//构造函数
{
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;//获取配置文件中的connStr的字符串
conn = new SqlConnection(connStr);//给conn赋值,连接数据库
}
private SqlConnection GetConn()//把连接打开的方法
{
if (conn.State == ConnectionState.Closed)//如果状态关闭
{
conn.Open();
}
return conn;
}
/// <summary>
/// 该方法传入不带参数的SQL的增删改语句或者存储过程。
/// </summary>
/// <param name="sql">SQL语句</param>
/// <returns>返回更新的记录数</returns>
public int ExecuteNonQuery(string cmdText,CommandType ct)//第一个参数是SQL语句,第二个参数是命令类型,是否是存储过程。
{
int res = 0;
try
{
SqlCommand 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="sql">SQL增删改语句</param>
/// <param name="paras">参数集合</param>
/// <returns></returns>
public int ExecuteNonQuery(string cmdText, SqlParameter[] paras,CommandType ct)
{
int res = 0;
using (cmd = new SqlCommand(cmdText, GetConn()))
{
cmd.CommandType = ct;
cmd.Parameters.AddRange(paras);//参数
res = cmd.ExecuteNonQuery();
}
return res;
}
/// <summary>
/// 该方法执行不带参数的SQL查询语句或者存储过程
/// </summary>
/// <param name="cmdText">SQL查询语句或者存储过程</param>
/// <returns></returns>
public DataTable ExcuteQuery(string cmdText,CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmdText, GetConn());
cmd.CommandType = ct;
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
/// <summary>
/// 带参数的查询语句或者存储过程
/// </summary>
/// <param name="sql"></param>
/// <param name="paras"></param>
/// <returns></returns>
public DataTable ExcuteQuery(string cmdText, SqlParameter[] paras,CommandType ct)
{
DataTable dt = new DataTable();
cmd.CommandType = ct;
cmd = new SqlCommand(cmdText, GetConn());
cmd.Parameters.AddRange(paras);
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
}
}
共分为四类:int类型的是增,删,更新操作。
而int类型又分为带参数和不带参数
datatable类型是查询操作
而datatable又分为带参数和不带参数