SqlHelper基于存储过程

using System;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using  System.Windows;

namespace DY.Common
{
    /// <summary>
    /// SqlServer 数据库操作类
    /// </summary>

    public class SqlClientDB
    {
        public static string SqlConStr; //数据库连接字符

        #region 无参数构造函数
        public SqlClientDB()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        #endregion

        #region 返回连接字符串
        public static SqlConnection SqlConn()
        {
            SqlConnection conn = new SqlConnection(SqlConStr);
            return conn;
        }
        #endregion

        #region 执行存储过程,返回整形,无参数
        /// <summary>
		/// 执行存储过程,包括Insert,Update,Delete,无参数
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <returns></returns>
		public static int ExecProcReturn(string procName)
        {
            return ExecProcReturn(procName, null);
        }
        #endregion

        #region  执行存储过程,包括Insert,Update,Delete,返回整形,有参数
        /// <summary>
		///  执行存储过程,包括Insert,Update,Delete,有参数
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <param name="prams">参数集</param>
		/// <returns></returns>
		public static int ExecProcReturn(string procName, SqlPrams prams)
        {
            SqlConnection conn = SqlConn();
            try
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                SqlCommand cmd = CreateCommand(procName, prams, conn);
                cmd.CommandTimeout = 80000;
                int count = cmd.ExecuteNonQuery();
                return count;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 存储过程名:" + procName, "系统提示");
                Err.GetErrPic(ex.Message);
                return 0;
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region 执行存储过程,包括Insert,返回整形,有输出参数
        /// <summary>
		///  执行存储过程,包括Insert,Update,Delete,有输出参数
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <param name="prams">参数集</param>
		/// <returns></returns>
		public static int ExecProcReturn(string procName, SqlPrams prams, out string ID)
        {
            SqlConnection conn = SqlConn();
            try
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                SqlCommand cmd = CreateCommand(procName, prams, conn);
                cmd.CommandTimeout = 80000;
                int count = cmd.ExecuteNonQuery();
                ID = cmd.Parameters["@ID"].Value.ToString();
                return count;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 存储过程名:" + procName, "系统提示",
                    MessageBoxButton.OK,MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                ID = "";
                return 0;
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region 执行存储过程,返回数据集,需要传递参数集
        /// <summary>
		/// 执行存储过程,返回数据集,需要传递参数集
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <param name="prams">参数集</param>
		/// <param name="TableName">返回的表名称(自定义)</param>
		/// <returns>返回数据集</returns>
		public static DataSet ExecProcReturnDataSet(string procName, SqlPrams prams, string TableName)
        {
            SqlConnection conn = SqlConn();
            try
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                SqlCommand Cmd = CreateCommand(procName, prams, conn);
                Cmd.CommandTimeout = 80000;
                SqlDataAdapter Da = new SqlDataAdapter(Cmd);
                DataSet ds = new DataSet();
                Da.Fill(ds, TableName);
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 存储过程名:" + procName, "系统提示",
              MessageBoxButton.OK, MessageBoxImage.Error);
                //MessageBox.Show(ex.ToString(), "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataSet();
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region 执行存储过程,分页返回数据集
        /// <summary>
		/// 执行存储过程,返回数据集
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <param name="prams">参数集</param>
		/// <param name="startRecord">要查询的开始记录位置</param>
		/// <param name="maxRecords">要查询的最多记录数</param>
		/// <param name="TableName">返回数据集中的表名称(自定义)</param>
		/// <returns>数据集</returns>
		public static DataSet ExecProcReturnDataSet(string procName, SqlPrams prams, int startRecord, int maxRecords, string TableName)
        {
            SqlConnection conn = SqlConn();
            try
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }
                SqlCommand Cmd = CreateCommand(procName, prams, conn);
                Cmd.CommandTimeout = 80000;
                SqlDataAdapter Da = new SqlDataAdapter(Cmd);
                DataSet ds = new DataSet();
                Da.Fill(ds, startRecord, maxRecords, TableName);
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 存储过程名:" + procName, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                //MessageBox.Show(ex.ToString(), "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataSet();
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region 执行SQL语句,分页返回数据集
        /// <summary>
        /// 执行SQL语句,分页返回数据集
        /// </summary>
        /// <param name="Sql"></param>
        /// <param name="startRecord"></param>
        /// <param name="maxRecords"></param>
        /// <param name="TableName"></param>
        /// <returns></returns>
		public static DataSet ExecSqlReturnDataSet(string Sql, int startRecord, int maxRecords, string TableName)
        {
            SqlConnection con = SqlConn();
            try
            {
                SqlDataAdapter Da = new SqlDataAdapter(Sql, con);
                DataSet ds = new DataSet();
                Da.Fill(ds, startRecord, maxRecords, TableName);
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 语句:" + Sql, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataSet();
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
        #endregion

        #region 执行存储过程,返回数据集(带参数)
        /// <summary>
		/// 执行存储过程,返回数据集
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <param name="prams">参数集</param>
		/// <returns>数据集</returns>
		public static DataSet ExecProcReturnDataSet(string procName, SqlPrams prams)
        {
            SqlConnection conn = SqlConn();
            try
            {
                SqlCommand Cmd = CreateCommand(procName, prams, conn);
                Cmd.CommandTimeout = 80000;
                SqlDataAdapter Da = new SqlDataAdapter(Cmd);
                DataSet ds = new DataSet();
                Da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 存储过程名:" + procName, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataSet();
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region  执行存储过程,返回数据表(带参数)
        /// <summary>
		/// 执行存储过程,返回数据表
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <param name="prams">存储过程参数集</param>
		/// <returns>返回表</returns>
		public static DataTable ExecProcReturnDataTable(string procName, SqlPrams prams)
        {
            SqlConnection conn = SqlConn();
            try
            {
                SqlCommand Cmd = CreateCommand(procName, prams, conn);
                Cmd.CommandTimeout = 80000;
                SqlDataAdapter Da = new SqlDataAdapter(Cmd);
                DataTable dt = new DataTable();
                Da.Fill(dt);
                return dt;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 存储过程名:" + procName, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataTable();
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region 执行存储过程,返回数据表(不带参数)
        /// <summary>
		/// 执行存储过程,返回数据表
		/// </summary>
		/// <param name="procName">存储过程名称</param>
		/// <returns>返回数据表</returns>
		public static DataTable ExecProcReturnDataTable(string procName)
        {
            SqlConnection conn = SqlConn();
            try
            {
                SqlCommand Cmd = CreateCommand(procName, null, conn);
                Cmd.CommandTimeout = 80000;
                SqlDataAdapter Da = new SqlDataAdapter(Cmd);
                DataTable dt = new DataTable();
                Da.Fill(dt);
                return dt;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + "\r " + ex.Source, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataTable();
            }
            finally
            {
                conn.Close();
                conn.Dispose();
            }
        }
        #endregion

        #region 执行存储过程,返回数据集(不带参数)
        /// <summary>
        /// 执行存储过程,返回数据集
        /// </summary>
        /// <param name="procName">存储过程参数集</param>
        /// <returns>数据集</returns>
        public static DataSet ExecProcReturnDataSet(string procName)
        {
            return ExecProcReturnDataSet(procName, null);
        }
        #endregion

        #region 执行单条SQL语句,返回整形值,成功返回1,失败返回0
        /// <summary>
        /// 执行单条SQL语句,返回整形值,成功返回1,失败返回0
        /// </summary>
        /// <param name="Sql">字符串</param>
        /// <returns>返回int</returns>
		public static int ExecSqlReturn(string Sql)
        {
            SqlConnection con = SqlConn();
            try
            {
                SqlCommand Cmd = new SqlCommand(Sql, con);
                Cmd.CommandTimeout = 80000;
                con.Open();
                int count = Cmd.ExecuteNonQuery();
                return count;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 语句:" + Sql, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return 0;
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
        #endregion

        #region 执行一组SQL语句,并封装到事务里,返回布尔值,成功返回true,失败返回false
        /// <summary>
        /// 执行一组SQL语句,并封装到事务里,返回布尔值,执行成功返回true,执行失败返回false
        /// </summary>
        /// <param name="Sql">字符串数组</param>
        /// <returns>返回布尔值</returns>
		public static bool ExecSqlReturn(string[] Sql)
        {
            SqlConnection con = SqlConn();
            SqlTransaction trans = null;
            try
            {
                con.Open();
                SqlCommand Cmd = con.CreateCommand();
                trans = con.BeginTransaction();
                Cmd.Connection = con;
                Cmd.Transaction = trans;
                Cmd.CommandTimeout = 80000;

                for (int i = 0; i < Sql.Length; i++)
                {
                    if (Sql[i] != "")  //从表格中生成的SQL语句,由于某些行不满足条件时数据元素可能为空
                    {
                        Cmd.CommandText = Sql[i];
                        Cmd.ExecuteNonQuery();
                    }
                }

                trans.Commit();

                return true;
            }
            catch (Exception e)
            {
                try
                {
                    trans.Rollback();
                    MessageBox.Show("错误原因:" + e.Message.Trim(), "系统提示", MessageBoxButton.OK, MessageBoxImage.Asterisk);
                    return false;
                }
                catch
                {
                    MessageBox.Show("错误原因:" + e.Message.Trim(), "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                    return false;
                }
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
        #endregion

        #region 执行SQL语句,返回数据集(参数带表名)
        /// <summary>
        /// 执行SQL语句,返回数据集(参数带表名)
        /// </summary>
        /// <param name="Sql">SQL语句</param>
        /// <param name="TableName">表名</param>
        /// <returns>数据集</returns>
		public static DataSet ExecSqlReturnDataSet(string Sql, string TableName)
        {
            SqlConnection con = SqlConn();
            try
            {
                SqlDataAdapter Da = new SqlDataAdapter(Sql, con);
                DataSet ds = new DataSet();
                Da.Fill(ds, TableName);
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 语句:" + Sql, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataSet();
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
        #endregion

        #region 执行SQL语句,返回数据集
        /// <summary>
        /// 执行SQL语句,返回数据集
        /// </summary>
        /// <param name="Sql"></param>
        /// <returns></returns>
		public static DataSet ExecSqlReturnDataSet(string Sql)
        {
            SqlConnection con = SqlConn();
            try
            {
                SqlDataAdapter Da = new SqlDataAdapter(Sql, con);
                DataSet ds = new DataSet();
                Da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 语句:" + Sql, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataSet();
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }
        #endregion

        #region 执行SQL语句,返回数据表
        /// <summary>
        /// 执行SQL语句,返回数据表
        /// </summary>
        /// <param name="Sql"></param>
        /// <returns></returns>
		public static DataTable ExecSqlReturnDataTable(string Sql)
        {
            SqlConnection con = SqlConn();
            try
            {
                SqlDataAdapter Da = new SqlDataAdapter(Sql, con);
                DataTable dt = new DataTable();
                Da.Fill(dt);
                return dt;
            }
            catch (Exception ex)
            {
                MessageBox.Show("错误原因:" + ex.Message.Trim() + "\r\n 语句:" + Sql, "系统提示", MessageBoxButton.OK, MessageBoxImage.Error);
                Err.GetErrPic(ex.Message);
                return new DataTable();
            }
            finally
            {
                con.Close();
                con.Dispose();
            }
        }

        #endregion  以上执行SQL语句

        #region 构造一个SqlCommand类型的实例
        /// <summary>
        /// 构造一个SqlCommand类型的实例
        /// </summary>
        /// <param name="procName">存储过程名称</param>
        /// <param name="prams">存储过程参数集</param>
        /// <param name="conn">数据库连接的一个实例</param>
        /// <returns>返回SqlCommand对象的一个实例</returns>
        private static SqlCommand CreateCommand(string procName, SqlPrams prams, SqlConnection conn)
        {
            try
            {
                SqlCommand cmd = new SqlCommand(procName, conn);
                cmd.CommandTimeout = 80000;
                cmd.CommandType = CommandType.StoredProcedure;
                if (prams != null)
                {
                    cmd.Parameters.Clear();
                    foreach (DictionaryEntry pram in prams.getSqlPrams)
                    {
                        cmd.Parameters.Add(pram.Value);
                    }
                }
                return cmd;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }


    /// <summary>
    /// 
    /// </summary>
    public class SqlPrams
    {
        #region 变量声明
        private Hashtable prams;//参数变量 
        #endregion

        #region 属性
        /// <summary>
        /// 取得sql参数集合
        /// </summary>
        public Hashtable getSqlPrams
        {
            get
            {
                return this.prams;
            }
        }
        #endregion

        #region 构造函数
        /// <summary>
        /// SqlPrams构造函数
        /// </summary>
        public SqlPrams()
        {
            prams = new Hashtable();
        }
        #endregion

        #region 添加参数
        /// <summary>
        /// 添加参数
        /// </summary>
        /// <param name="pramName">参数名称</param>
        /// <param name="Value">参数值</param>
        /// <param name="Direction">输入输出类型</param>
        public void Add(string pramName, object Value, ParameterDirection Direction)
        {
            if (pramName == null)
            {
                return;
            }
            SqlParameter pram = new SqlParameter(pramName, Value);
            pram.Direction = Direction;
            pram.SqlDbType = SqlDbType.VarChar;

            pram.Size = 4000;
            if (prams.Contains(pramName))
            {
                prams[pramName] = pram;
            }
            else
            {
                prams.Add(pramName, pram);
            }
        }
        #endregion

        #region 添加image类型参数
        /// <summary>
        /// 添加参数
        /// </summary>
        /// <param name="pramName">参数名称</param>
        /// <param name="Value">参数值</param>
        /// <param name="Direction">输入输出类型</param>
        public void AddImage(string pramName, byte[] imgdata, ParameterDirection Direction)
        {
            if (pramName == null)
            {
                return;
            }
            SqlParameter pram = new SqlParameter(pramName, imgdata);
            pram.Direction = Direction;
            pram.SqlDbType = SqlDbType.Image;
            if (prams.Contains(pramName))
            {
                prams[pramName] = pram;
            }
            else
            {
                prams.Add(pramName, pram);
            }
        }
        #endregion

        #region 添加输出参数
        /// <summary>
        /// 添加输出参数
        /// </summary>
        /// <param name="pramName">参数名称</param>
        /// <param name="Value">参数值</param>
        public void AddOutputPrams(string pramName, object Value)
        {
            this.Add(pramName, Value, ParameterDirection.Output);
        }
        #endregion

        #region 添加输入参数
        /// <summary>
        /// 添加输入参数
        /// </summary>
        /// <param name="pramName">参数名称</param>
        /// <param name="Value">参数值</param>
        public void AddInputPrams(string pramName, object Value)
        {
            this.Add(pramName, Value, ParameterDirection.Input);
        }
        #endregion

        #region 添加图片输入参数
        /// <summary>
        /// 添加图片输入参数
        /// </summary>
        /// <param name="pramName">参数名称</param>
        /// <param name="Value">参数值</param>
        public void AddImageInputPrams(string pramName, byte[] Value)
        {
            this.AddImage(pramName, Value, ParameterDirection.Input);
        }
        #endregion
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值