SqlHelper

[size=small]
#region 打开数据库连接
        private static SqlConnection sqlConString;
        private static SqlConnection SqlConString
        {
            get
            {
                string connString = ConfigurationManager.ConnectionStrings["SqlConString"].ConnectionString;
                if (sqlConString == null)
                {
                    sqlConString = new SqlConnection(connString);
                    sqlConString.Open();
                }
                else if (sqlConString.State == ConnectionState.Closed)
                {
                    sqlConString.Open();
                }
                else if (sqlConString.State == ConnectionState.Broken)
                {
                    sqlConString.Close();
                    sqlConString.Open();
                }
                return sqlConString;
            }
        }
        #endregion

        #region ExecuteScalar
        /// <summary>
        /// 以不带参数形式执行SQL语句
        /// </summary>
        /// <param name="strSql">SQL语句或存储过程名称</param>
        /// <returns>返回首行首列单元格的值</returns>
        public static int ExecuteScalar(string strSql)
        {
            int result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                result = Convert.ToInt32(sqlCmd.ExecuteScalar());
            }
            return result;
        }
        public static object GetExecuteObject(string strSql)
        {
            object result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                result = sqlCmd.ExecuteScalar();
            }
            return result;
        }
        /// <summary>
        /// 以不带参数形式执行SQL语句或存储过程
        /// </summary>
        /// <param name="strSql">SQL语句或存储过程名称</param>
        /// <param name="cmdType">命令类型</param>
        /// <returns>返回首行首列单元格的值</returns>
        public static int ExecuteScalar(string strSql, CommandType cmdType)
        {
            int result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                sqlCmd.CommandType = cmdType;
                result = Convert.ToInt32(sqlCmd.ExecuteScalar());
            }
            return result;
        }
        public static object GetExecuteObject(string strSql, CommandType cmdType)
        {
            object result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                sqlCmd.CommandType = cmdType;
                result = sqlCmd.ExecuteScalar();
            }
            return result;
        }
        /// <summary>
        /// 以带参数的形式执行SQL语句或存储过程
        /// </summary>
        /// <param name="strSql">SQL语句或存储过程名称</param>
        /// <param name="cmdType">命令类型</param>
        /// <param name="para"></param>
        /// <returns>返回首行首列单元格的值</returns>
        public static int ExecuteScalar(string strSql, CommandType cmdType, params SqlParameter[] para)
        {
            int result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                sqlCmd.CommandType = cmdType;
                sqlCmd.Parameters.AddRange(para);
                result = Convert.ToInt32(sqlCmd.ExecuteScalar());
                sqlCmd.Parameters.Clear();
            }
            return result;
        }
        public static object GetExecuteObject(string strSql, CommandType cmdType, params SqlParameter[] para)
        {
            object result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                sqlCmd.CommandType = cmdType;
                result = sqlCmd.ExecuteScalar();
                sqlCmd.Parameters.Clear();
            }
            return result;
        }
        #endregion

        #region ExecuteNonQuery
        /// <summary>
        /// 以不带参数的形式执行Sql语句,返回受影响行数
        /// </summary>
        /// <param name="strSql">SQL语句</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string strSql)
        {
            int result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                result = sqlCmd.ExecuteNonQuery();
            }
            return result;
        }
        /// <summary>
        /// 以带参数的形式执行Sql语句或存储过程,返回受影响行数
        /// </summary>
        /// <param name="strSql">SQL语句或存储过程名称</param>
        /// <param name="para">参数集合</param>
        /// <returns></returns>
        public static int ExecuteNonQuery(string strSql, CommandType cmdType, params SqlParameter[] para)
        {
            int result;
            using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
            {
                sqlCmd.CommandType = cmdType;
                sqlCmd.Parameters.AddRange(para);
                result = sqlCmd.ExecuteNonQuery();
                sqlCmd.Parameters.Clear();
            }
            return result;
        }
        #endregion

        #region ExecuteReader
        /// <summary>
        /// 返回SqlDataReader对象
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns></returns>
        public static SqlDataReader GetDataReader(string strSql)
        {
            SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
            SqlDataReader reader = sqlCmd.ExecuteReader();
            return reader;
        }
        /// <summary>
        /// 以带参数的形式返回SqlDataReader对象
        /// </summary>
        /// <param name="strSql"></param>
        /// <param name="para"></param>
        /// <returns></returns>
        public static SqlDataReader GetDataReader(string strSql, params SqlParameter[] para)
        {
            SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
            sqlCmd.Parameters.AddRange(para);
            SqlDataReader reader = sqlCmd.ExecuteReader();
            sqlCmd.Parameters.Clear();
            return reader;
        }
        #endregion

        #region GetDataTable
        /// <summary>
        /// 以不带参数的形式执行SQL语句或存储过程,返回DataTable数据集
        /// </summary>
        /// <param name="strSql">SQL语句或存储过程名称</param>
        /// <param name="cmdType">命令类型</param>
        /// <returns></returns>
        public static DataTable GetDataTable(string strSql, CommandType cmdType)
        {
            DataTable dt = new DataTable();
            SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
            sqlCmd.CommandType = cmdType;
            using (SqlDataReader sqlDR = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sqlDR);
                sqlDR.Close();
            }
            return dt;
        }
        /// <summary>
        /// 以带参数的形式执行SQL语句或存储过程,返回DataTable数据集
        /// </summary>
        /// <param name="strSql">SQL语句或存储过程名称</param>
        /// <param name="cmdType">命令类型</param>
        /// <param name="para">参数集合</param>
        /// <returns></returns>
        public static DataTable GetDataTable(string strSql, CommandType cmdType, params SqlParameter[] para)
        {
            DataTable dt = new DataTable();
            SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
            sqlCmd.CommandType = cmdType;
            sqlCmd.Parameters.AddRange(para);
            using (SqlDataReader sqlDR = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sqlDR);
                sqlDR.Close();
            }
            sqlCmd.Parameters.Clear();
            return dt;
        }
        #endregion

        #region 类型转换
        /// <summary>
        /// 将空("")或null值的字符串转换为空字段
        /// </summary>
        /// <param name="obj">传入的参数</param>
        public static object GetValueWhetherNull(object obj)
        {
            if (string.IsNullOrEmpty(obj.ToString()))
            {
                return DBNull.Value;
            }
            else
            {
                return obj;
            }
        }
        /// <summary>
        /// 将值类型(整型、浮点型、Decimal型、boo型、可空类型(Nullable<T>泛型结构体))转换为空字段
        /// </summary>
        /// <param name="obj">传入的参数</param>
        /// <returns></returns>
        public static object GetSqlNull(object obj)
        {
            return obj == null ? (object)DBNull.Value : obj;
        }
        #endregion
解释一下cmd.Parameters.Clear();的作用
1、清除以前的参数设置,防止重复添加
2、在大多数时候如果不清楚就会在造成参数冗余,添加的时候调用了cmd在修改之前没有清除,就可能报参数错误
[/size]

你可能感兴趣的:(sql)