c#经典三层框架中的SqlHelper帮助类

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DAL
{
    class SqlHelper
    { 
        //获取字符串
        static string constr = ConfigurationManager.ConnectionStrings["JDNew"].ConnectionString;
        //创建连接
        static SqlConnection conn = new SqlConnection(constr);
        /// <summary>
        /// //打开连接,关闭连接。
        /// </summary>
        public static void ConnOpen()
        {
            if (conn.State == System.Data.ConnectionState.Closed)
            {
                conn.Open();
            }
        }
        public static void ConnClose()
        {
            if (conn.State == System.Data.ConnectionState.Open)
            {
                conn.Close();
            }
        }
        /// <summary>
        /// 查询
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static SqlDataReader ExecuteReader(string sql, params object[] param)
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            for (int i = 0; i < param.Length; i++)
            {
                cmd.Parameters.AddWithValue("@" + i, param[i]);
            }
            SqlDataReader sdr = cmd.ExecuteReader();
            conn.Close();
            return sdr;
        }
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static bool ExecuteNonQuery(string sql, params object[] param)
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            for (int i = 0; i < param.Length; i++)
            {
                cmd.Parameters.AddWithValue("@" + i, param[i]);
            }
            int j = cmd.ExecuteNonQuery();
            if (j > 0)
            {
                conn.Close();
                return true;
            }
            else
            {
                conn.Close();
                return false;
            }
        }
        /// <summary>
        /// 【存储过程】
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="commandType"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static bool ExecuteNonQuery_Pro(string sql, CommandType commandType, SqlParameter[] parameters)
        {
            SqlCommand cmd = new SqlCommand(sql, conn) { CommandType = commandType };
            if (parameters != null)
            {
                foreach (SqlParameter parameter in parameters)
                {
                    cmd.Parameters.Add(parameter);
                }
            }
            conn.Open();
            int count = cmd.ExecuteNonQuery();
            //conn.Close();
            if (count > 0)
            {
                conn.Close();
                return true;
            }
            else
            {
                conn.Close();
                return false;
            }
        }
        /// <summary>
        /// 数据集
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static DataTable DataTable(string sql, params object[] param)
        {
            conn.Open();
            SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
            for (int i = 0; i < param.Length; i++)
            {
                sda.SelectCommand.Parameters.AddWithValue("@" + i, param[i]);
            }
            DataTable dt = new DataTable();
            sda.Fill(dt);
            conn.Close();
            return dt;
        }
        /// <summary>
        /// 第一行第一列
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="param"></param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, params object[] param)
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(sql, conn);
            for (int i = 0; i < param.Length; i++)
            {
                cmd.Parameters.AddWithValue("@" + i, param[i]);
            }
            object obj = cmd.ExecuteScalar();
            conn.Close();
            return obj;
        }

        /// <summary>
        /// 事务处理
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="count"></param>
        /// <param name="parm"></param>
        /// <returns></returns>
        public static bool Transaction(string sql, int count, params object[] parm)
        {
            ConnOpen();
            SqlCommand cmd = new SqlCommand(sql, conn);
            if (parm != null)
            {
                for (int i = 0; i < parm.Length; i++)
                {
                    cmd.Parameters.AddWithValue("@" + i, parm[i]);
                }
            }

            //开启事务
            cmd.Transaction = conn.BeginTransaction();//利用连接对象 获取开启的事务赋值给命令对象 开启事务
            int result = 0;//定义一个变量来获取 执行成功的个数
            try
            {
                result = cmd.ExecuteNonQuery();//正常执行
            }
            catch
            {
                //如果出现异常代表执行没有成功
                cmd.Transaction.Rollback();//如果没成功,回到原点
                ConnClose();
                return false;
            }
            if (result == count)
            {
                //说明执行成功了 才可以想数据库中提交数据
                cmd.Transaction.Commit();
                ConnClose();
                return true;
            }
            else
            {
                //没有成功 回到原点
                cmd.Transaction.Rollback();
                ConnClose();
                return false;
            }
        }
        /// <summary>
        /// 分页,限制起始索引
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="index"></param>
        /// <param name="MaxCount"></param>
        /// <param name="tablename"></param>
        /// <param name="pm"></param>
        /// <returns></returns>
        public static DataSet DataSet(string sql, int index, int MaxCount, string tablename, params object[] pm)
        {
            SqlConnection conn = new SqlConnection(constr);
            conn.Open();
            SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
            for (int i = 0; i < pm.Length; i++)
            {
                sda.SelectCommand.Parameters.AddWithValue("@" + i, pm[i]);
            }
            DataSet ds = new DataSet();
            sda.Fill(ds, index, MaxCount, tablename);
            conn.Close();
            return ds;
        }

    }
}

猜你喜欢

转载自www.cnblogs.com/SeNaiTes/p/9382077.html