C# DAL层数据库操作类SqlHelper

本文详细介绍了C#中用于数据库操作的SqlHelper类,包括其基本使用方法、连接池管理以及如何执行SQL查询和存储过程。通过实例展示了如何在DAL层进行增删改查操作,帮助开发者更好地理解和应用SqlHelper进行数据库交互。
public class SqlHelper
{

    //sql连接对象
    private static SqlConnection conConnection = null;
    //数据库命令对象
    private static SqlCommand conCommand = null;

    public SqlHelper()
    {
    }
    //获取数据库连接字符串
    private static string getConnectionString()
    {
        return System.Configuration.ConfigurationManager.ConnectionStrings["DispatchDB"].ConnectionString;
    }
    //打开数据库连接
    private static void openSqlConnection()
    {
        try
        {
            // 如果数据库连接对象状态为关闭
            if (conConnection.State == ConnectionState.Closed)
            {
                // 打开连接
                conConnection.Open();
            }
        }
        catch (Exception ex)
        {
        }
    }
    //关闭数据库连接
    private static void closeSqlConnection()
    {
        // 如果数据库连接对象不为空
        if (conConnection != null)
        {
	        try
	        {
	            // 如果数据库连接对象当前状态不是关闭
	            if (conConnection.State != ConnectionState.Closed)
	            {
	                // 关闭数据库连接,释放资源
	                conConnection.Close();
	                conConnection.Dispose();
	            }
	        }
	        catch (Exception ex)
	        {
	        }
        }
    }

    #region 数据库操作方法
    /// <summary>
    /// insert,updata,delete
    /// </summary>
    /// <param name="sqlStr">sql语句或存储过程名</param>
    /// <param name="cmdType">命令对象类型</param>
    /// <param name="pms">分配给命令的SqlParamter参数数组</param>
    /// <returns></returns>
    public bool ExecuteNonQuery(string sqlStr, CommandType cmdType, params SqlParameter[] pms)
    {
        conConnection = new SqlConnection(getConnectionString());
        //实例化数据库命令对象
        using (conCommand = new SqlCommand(sqlStr, conConnection))
        {
            conCommand.CommandType = cmdType;
            if (pms != null)
            {
                conCommand.Parameters.AddRange(pms);
            }
            try
            {
                SqlHelper.openSqlConnection();
                return (int)conCommand.ExecuteNonQuery() > 0;
            }
            finally {
                SqlHelper.closeSqlConnection();
            }
        }
    }
    /// <summary>
    /// 返回结果集单个值
    /// </summary>
    /// <param name="sqlStr">sql语句或存储过程名</param>
    /// <param name="cmdType">命令对象类型</param>
    /// <param name="pms">分配给命令的SqlParamter参数数组</param>
    /// <returns></returns>
    public static object ExecuteScalar(string sqlStr, CommandType cmdType, params SqlParameter[] pms)
    {
        conConnection = new SqlConnection(getConnectionString());
        //实例化数据库命令对象
        using (conCommand = new SqlCommand(sqlStr, conConnection))
        {
            conCommand.CommandType = cmdType;
            if (pms != null)
            {
                conCommand.Parameters.AddRange(pms);
            }
            try
            {
                SqlHelper.openSqlConnection();
                return conCommand.ExecuteScalar();
            }
            finally
            {
                SqlHelper.closeSqlConnection();
            }
        }
    }
    /// <summary>
    /// 返回SqlDataReader
    /// </summary>
    /// <param name="sqlStr">sql语句或存储过程名</param>
    /// <param name="cmdType">命令对象类型</param>
    /// <param name="pms">分配给命令的SqlParamter参数数组</param>
    /// <returns></returns>
    public static SqlDataReader ExecuteReader(string sqlStr, CommandType cmdType, params SqlParameter[] pms) 
    {
        conConnection = new SqlConnection(getConnectionString());
        //实例化数据库命令对象
        using (conCommand = new SqlCommand(sqlStr, conConnection))
        {
            conCommand.CommandType = cmdType;
            if (pms != null)
            {
                conCommand.Parameters.AddRange(pms);
            }
            try
            {
                SqlHelper.openSqlConnection();
                return conCommand.ExecuteReader(CommandBehavior.CloseConnection);
            }
            finally
            {
                SqlHelper.closeSqlConnection();
            }
        }
    }
    /// <summary>
    /// 返回DataTable
    /// </summary>
    /// <param name="sqlStr">sql语句或存储过程名</param>
    /// <param name="cmdType">命令对象类型</param>
    /// <param name="pms">分配给命令的SqlParamter参数数组</param>
    /// <returns></returns>
    public static DataTable ExecuteDataTable(string sqlStr, CommandType cmdType, params SqlParameter[] pms)
    {
        conConnection = new SqlConnection(getConnectionString());
        DataTable dt = new DataTable();
        using (SqlDataAdapter adapter = new SqlDataAdapter(sqlStr, conConnection))
        {
            adapter.SelectCommand.CommandType = cmdType;
            if (pms != null)
            {
                adapter.SelectCommand.Parameters.AddRange(pms);
            }
            adapter.Fill(dt);
            return dt;
        }
    }

    #endregion
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值