using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//对数据库进行操作引入命名空间
using System.Data;
using System.Data.SqlClient;
using System.Configuration; namespace DAL
{
public class SQLhelper
{ /// 变量定义<summary>
/// </summary>
private SqlConnection conn = null;
private SqlCommand cmd = null;
private SqlDataReader sdr = null; /// SQLhelper connStr 字符串的连接<summary>
/// </summary> public SQLhelper()
{
string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString; //连接SQL数据表
conn = new SqlConnection(connStr); //连接通道 } /// 获取conn<summary>
/// </summary>
/// <returns>为什么要这样写有什么意义呢?</returns>
private SqlConnection GetConn()
{
if (conn.State == ConnectionState.Closed) //-判断当前连接的状态 如果当前的连接是关闭状态的话 结果为True
{
conn.Open(); //-打开数据库
} return conn; //返回结果
} /// 该方法传入一个增删改SQL语句或是存储过程<summary>
/// </summary>
/// <param name="sql">要执行的增删改SQL语句或是存储过程</param>
/// <returns>返回更新的记录数</returns>
public int ExecuteNonQuery(string cmdText,CommandType ct)
{
//-执行非查询 比如说 insert Updata Delect
//不定义的时候返回的初值是零
int res;
try
{
//-1、将预见可能引发异常的代码包含在try语句块中。
//-2、如果发生了异常,则转入catch的执行。
cmd = new SqlCommand(cmdText, GetConn()); cmd.CommandType = ct;
res = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
//-这将捕获任何发生的异常。另外,还提供e参数,你可以在处理异常时使用e参数来获得有关异常的信息。
throw ex;
}
finally
{
//-不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally
//-清理工作。如关闭数据库连接。
if (conn.State == ConnectionState.Open)
{
conn.Close();
} }
return res; //-返回给调用者
} /// 执行带参数的增删改语句或是存储过程<summary>
/// 执行带参数的增删改语句或是存储过程
/// </summary>
/// <param name="sql">带参数的SQL语句或是存储过程</param>
/// <param name="paras">参数集合</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; } /// 该方法传入一个查询SQL语句或是存储过程<summary>
/// 该方法传入一个查询SQL语句或是存储过程
/// </summary>
/// <param name="cmtText">SQL查询语句或存储过程</param>
/// <returns></returns>
public DataTable ExecuteQuery(string cmtText,CommandType ct)
{
DataTable dt = new DataTable();
cmd = new SqlCommand(cmtText, GetConn());
cmd.CommandType = ct;
//关系sdr的同是将会关闭conn
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
} /// 执行带参数的SQL语句或是存储过程<summary>
/// 执行带参数的SQL语句或是存储过程
/// </summary>
/// <param name="cmdText">SQL语句或是存储过程</param>
/// <param name="paras"></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);
//关系sdr的同是将会关闭conn
using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sdr);
}
return dt;
} } }