Ado.net 通用访问类

public class DbHelperSQL
    {
        private static string connString = ConfigurationManager.ConnectionStrings["SqlDataSource"].ToString();

        #region 获取一个连接通道
        /// <summary>
        /// 获取一个连接通道
        /// </summary>
        /// <returns></returns>
        public static SqlConnection CreateConn()
        {
            return new SqlConnection(connString);
        }
        #endregion

        #region 获取数据源
        /// <summary>
        /// 获取数据源
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parms"></param>
        /// <returns></returns>
        public static DataSet Query(string sql, CommandType cmdType = CommandType.Text, params SqlParameter[] parms)
        {
            DataSet dt = new DataSet();
            using (SqlConnection conn = CreateConn())
            {
                SqlDataAdapter da = new SqlDataAdapter();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = cmdType;
                if (parms != null)
                {
                    cmd.Parameters.AddRange(parms);
                }
                da.SelectCommand = cmd;
                da.Fill(dt);
            }

            return dt;
        }
        #endregion

        #region 执行事务
        /// <summary>
        /// 执行事务
        /// </summary>
        /// <param name="sql">存储过程名</param>
        /// <param name="parmsList">每个存储过程中所包含的参数</param>
        /// <returns></returns>
        public static int ExecTran(string sql,  List<SqlParameter[]> parmsList,CommandType cmdType = CommandType.Text)
        {
            int row = 0;
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlTransaction tran = conn.BeginTransaction();
                SqlCommand cmd = new SqlCommand(sql, conn, tran);
                cmd.CommandType = cmdType;
                if (parmsList != null && parmsList.Count>0)
                {
                    foreach (SqlParameter[] parms in parmsList)
                    {
                        cmd.Parameters.Clear();
                        if (parms != null)
                        {
                            cmd.Parameters.AddRange(parms);
                        } 
                        try
                        {
                            row += cmd.ExecuteNonQuery();
                        }
                        catch
                        {
                            tran.Rollback();
                            return 0;
                        }
                    }
                    tran.Commit();
                }
            }
            return row;
        }
        #endregion

        #region 执行包含主表和子表的事务
        /// <summary>
        /// 执行包含主表和子表的事务
        /// </summary>
        /// <param name="MainSql">主表存储过程</param>
        /// <param name="MainParmsList">主表存储过程包含的参数</param>
        /// <param name="ChildSql">子表存储过程</param>
        /// <param name="ChildParmsList"></param>
        /// <returns></returns>
        public int ExecTran(string MainSql, CommandType cmdType, List<SqlParameter[]> MainParmsList, string ChildSql, List<SqlParameter[]> ChildParmsList)
        {
            int row = 0;
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlTransaction tran = conn.BeginTransaction();
                SqlCommand cmd = new SqlCommand(MainSql, conn, tran);               
                cmd.CommandType = cmdType;               
                if (MainParmsList != null)
                {
                    foreach (SqlParameter[] parms in MainParmsList)
                    { 
                        cmd.Parameters.Clear();
                        if (parms != null)
                        {                           
                            cmd.Parameters.AddRange(parms);                           
                        }
                        try
                        {
                            row = cmd.ExecuteNonQuery();
                        }
                        catch
                        {
                            tran.Rollback();
                            return 0;
                        }
                    }
                }
                cmd.CommandText = ChildSql;
                if (ChildParmsList != null)
                {
                    foreach (SqlParameter[] parm in ChildParmsList)
                    {
                        cmd.Parameters.Clear();
                        if (parm != null)
                        {
                            cmd.Parameters.AddRange(parm);
                        }
                        try
                        {
                            row = cmd.ExecuteNonQuery();
                        }
                        catch
                        {
                            tran.Rollback();
                            return 0;
                        }
                    }
                    tran.Commit();
                }
            }
            return row;
        }
        #endregion

        #region 执行Sql语句
        /// <summary>
        /// 执行Sql语句
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parms"></param>
        /// <returns></returns>
        public static int ExecuteSql(string sql, CommandType cmdType = CommandType.Text, params SqlParameter[] parms)
        {
            int row = 0;
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = cmdType;
                if (parms != null)
                {
                    cmd.Parameters.AddRange(parms);
                }
                row = cmd.ExecuteNonQuery();
            }
            return row;
        }
        #endregion

        #region 获取首行首列
        /// <summary>
        /// 获取首行首列
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="parms"></param>
        /// <returns></returns>
        public static object GetSingle(string sql, CommandType cmdType= CommandType.Text, params SqlParameter[] parms)
        {
            using (SqlConnection conn = CreateConn())
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.CommandType = cmdType;
                if (parms != null)
                {
                    cmd.Parameters.AddRange(parms);
                }
                return cmd.ExecuteScalar();
            }
        }
        #endregion
    }
原文地址:https://www.cnblogs.com/xuyubing/p/4334554.html