using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Text; 
 | 
using System.Data.SqlClient; 
 | 
using System.Data; 
 | 
  
 | 
namespace Pub_Class 
 | 
{ 
 | 
    public class ClsSqlHelper:IDisposable 
 | 
    { 
 | 
        private SqlConnection MainCn;//创建连接对象 
 | 
        SqlTransaction MainTran; 
 | 
        public string sServer; 
 | 
        public string sDataBase ; 
 | 
        public string sUser; 
 | 
        public string sPassword; 
 | 
        //开始事务 
 | 
        public void  BeginTran() 
 | 
        { 
 | 
            if (!this.CnOpen()) 
 | 
                return; 
 | 
            MainTran=MainCn.BeginTransaction(); 
 | 
        } 
 | 
        //结束事务 
 | 
        public void Commit() 
 | 
        { 
 | 
            MainTran.Commit(); 
 | 
            CnClose(); 
 | 
        } 
 | 
        //回滚事务 
 | 
        public void RollBack() 
 | 
        { 
 | 
            MainTran.Rollback(); 
 | 
            CnClose(); 
 | 
        } 
 | 
  
 | 
        public ClsSqlHelper() 
 | 
        { 
 | 
            sServer = ClsIni.ReadIni("Erp", "Server", ClsPub.AppPath + @"\"+"HXErp.ini"); 
 | 
            sDataBase = ClsIni.ReadIni("Erp", "DataBase", ClsPub.AppPath + @"\" + "HXErp.ini"); 
 | 
            sUser = ClsIni.ReadIni("Erp", "UserName", ClsPub.AppPath + @"\" + "HXErp.ini"); 
 | 
            sPassword = ClsIni.ReadIni("Erp", "PassWord", ClsPub.AppPath + @"\" + "HXErp.ini"); 
 | 
             
 | 
        } 
 | 
  
 | 
        public bool CheckOpen() 
 | 
        { 
 | 
            if (sServer == "" || sServer == "没有找到!") 
 | 
            { 
 | 
                throw new Exception("错误的服务器名!"); 
 | 
            } 
 | 
            if (sDataBase == "" || sDataBase == "没有找到!") 
 | 
            { 
 | 
                throw new Exception("错误的数据库名!"); 
 | 
            } 
 | 
            SqlConnection oCn = new SqlConnection("Data Source=" + sServer + ";DataBase=master;User ID=" + sUser + ";PWD=" + sPassword + " "); 
 | 
            try 
 | 
            { 
 | 
                oCn.Open(); 
 | 
                return true; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                //e.Message = e.Message + "," + sServer + "," + sDataBase;  
 | 
                //e. 
 | 
                //throw (e); 
 | 
                throw new Exception(e.Message + "," + sServer + "," + sDataBase); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private bool  CnOpen()//OPEN数据库连接 
 | 
        { 
 | 
            if (sServer == "" || sServer == "没有找到!") 
 | 
            { 
 | 
                throw new Exception("错误的服务器名!"); 
 | 
            } 
 | 
            if (sDataBase == "" || sDataBase == "没有找到!") 
 | 
            { 
 | 
                throw new Exception("错误的数据库名!"); 
 | 
            } 
 | 
            if (MainCn==null) 
 | 
            { 
 | 
                MainCn = new SqlConnection("Data Source=" + sServer + ";DataBase=" + sDataBase + ";User ID=" + sUser + ";PWD=" + sPassword + " "); 
 | 
            } 
 | 
            if (MainCn.State == System.Data.ConnectionState.Closed) 
 | 
            { 
 | 
                try 
 | 
                { 
 | 
                    MainCn.Open(); 
 | 
                    return true; 
 | 
                } 
 | 
                catch (Exception e) 
 | 
                { 
 | 
                    throw new Exception(e.Message + "," + sServer + "," + sDataBase); 
 | 
                } 
 | 
            } 
 | 
            else 
 | 
                return true; 
 | 
        } 
 | 
        private void CnClose()//关闭数据库连接 
 | 
        { 
 | 
            if (MainCn != null) 
 | 
                MainCn.Close(); 
 | 
        } 
 | 
        private void CnDispose()//释放资源 
 | 
        { 
 | 
            if(MainCn!=null) 
 | 
            { 
 | 
                MainCn.Dispose(); 
 | 
                MainCn=null; 
 | 
            } 
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 转换参数 
 | 
        /// </summary> 
 | 
        /// <param name="ParamName">存储过程名称或命令文本</param> 
 | 
        /// <param name="DbType">参数类型</param></param> 
 | 
        /// <param name="Size">参数大小</param> 
 | 
        /// <param name="Value">参数值</param> 
 | 
        /// <returns>新的 parameter 对象</returns> 
 | 
        public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) 
 | 
        { 
 | 
            return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);  
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 初始化参数值 
 | 
        /// </summary> 
 | 
        /// <param name="ParamName">存储过程名称或命令文本</param> 
 | 
        /// <param name="DbType">参数类型</param> 
 | 
        /// <param name="Size">参数大小</param> 
 | 
        /// <param name="Direction">参数方向</param> 
 | 
        /// <param name="Value">参数值</param> 
 | 
        /// <returns>新的 parameter 对象</returns> 
 | 
        private SqlParameter MakeParam(string ParamName, SqlDbType DbType, Int32 Size, ParameterDirection Direction, object Value) 
 | 
        { 
 | 
            SqlParameter param; 
 | 
            if (Size > 0) 
 | 
                param = new SqlParameter(ParamName, DbType, Size); 
 | 
            else 
 | 
                param = new SqlParameter(ParamName, DbType); 
 | 
            param.Direction = Direction; 
 | 
            if (!(Direction == ParameterDirection.Output && Value == null)) 
 | 
                param.Value = Value; 
 | 
            return param; 
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 执行SQL无返回值 
 | 
        /// </summary> 
 | 
        /// <param name="procName"></param> 
 | 
        /// <param name="sErrMessage"></param> 
 | 
        /// <returns></returns> 
 | 
        public void RunProc(string procName) 
 | 
        { 
 | 
            if (!this.CnOpen()) 
 | 
            { 
 | 
                return; 
 | 
                //sErrMessage = "连接数据库失败!"; 
 | 
            } 
 | 
            try 
 | 
            { 
 | 
                SqlCommand cmd = new SqlCommand(procName, MainCn); 
 | 
                cmd.Transaction = MainTran; 
 | 
                cmd.ExecuteNonQuery(); 
 | 
                return; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                  
 | 
                throw (e); 
 | 
                return; 
 | 
            } 
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 执行 
 | 
        /// </summary> 
 | 
        /// <param name="procName"></param> 
 | 
        /// <param name="sErrMessage"></param> 
 | 
        /// <returns></returns> 
 | 
        public void RunProc(string procName,ref string sErr) 
 | 
        { 
 | 
            if (!this.CnOpen()) 
 | 
            { 
 | 
                sErr = "连接数据库失败!"; 
 | 
                return; 
 | 
                 
 | 
            } 
 | 
            try 
 | 
            { 
 | 
                SqlCommand cmd = new SqlCommand(procName, MainCn); 
 | 
                cmd.Transaction = MainTran; 
 | 
                cmd.ExecuteNonQuery(); 
 | 
                return; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                sErr =e.Message; 
 | 
                throw (e); 
 | 
                return; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 递入参数执行SQL并返回DATASET 
 | 
        /// </summary> 
 | 
        /// <param name="procName">执行语句</param> 
 | 
        /// <param name="prams">参数</param> 
 | 
        /// <param name="tbName">表名</param> 
 | 
        /// <param name="sErrMessage">异常信息</param> 
 | 
        /// <returns></returns> 
 | 
        public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName ) 
 | 
        { 
 | 
            SqlDataAdapter dap = CreateDataAdaper(procName, prams); 
 | 
            if (dap == null) 
 | 
                return null; 
 | 
            DataSet ds = new DataSet(); 
 | 
            try 
 | 
            { 
 | 
                dap.Fill(ds, tbName); 
 | 
                return ds; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                throw (e); 
 | 
                return null; 
 | 
            } 
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 执行SQL并返回DATASET 
 | 
        /// </summary> 
 | 
        /// <param name="procName">执行语句</param> 
 | 
        /// <param name="tbName">表名</param> 
 | 
        /// <param name="sErrMessage">异常信息</param> 
 | 
        /// <returns></returns> 
 | 
        public DataSet RunProcReturn(string procName, string tbName ) 
 | 
        { 
 | 
            SqlDataAdapter dap = CreateDataAdaper(procName, null); 
 | 
            DataSet ds = new DataSet(); 
 | 
            try 
 | 
            { 
 | 
                dap.Fill(ds, tbName); 
 | 
                return ds; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                throw (e); 
 | 
                return null; 
 | 
            } 
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 执行SQL并返回DATASET和错误信息 
 | 
        /// </summary> 
 | 
        /// <param name="procName">执行语句</param> 
 | 
        /// <param name="tbName">表名</param> 
 | 
        /// <param name="sErrMessage">异常信息</param> 
 | 
        /// <returns></returns> 
 | 
        public DataSet RunProcReturn(string procName, string tbName,ref string sErr) 
 | 
        { 
 | 
            SqlDataAdapter dap = CreateDataAdaper(procName, null); 
 | 
            DataSet ds = new DataSet(); 
 | 
            try 
 | 
            { 
 | 
                dap.Fill(ds, tbName); 
 | 
                return ds; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                sErr = e.Message; 
 | 
                throw (e); 
 | 
                return null; 
 | 
            } 
 | 
        } 
 | 
        private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams) 
 | 
        { 
 | 
            if (this.CnOpen()) 
 | 
            { 
 | 
                SqlDataAdapter dap = new SqlDataAdapter(procName, MainCn); 
 | 
                dap.SelectCommand.CommandType = CommandType.Text; 
 | 
                dap.SelectCommand.CommandTimeout = 120; 
 | 
                dap.SelectCommand.Transaction = MainTran; 
 | 
                if (prams != null) 
 | 
                { 
 | 
                    foreach (SqlParameter parameter in prams) 
 | 
                        dap.SelectCommand.Parameters.Add(parameter); 
 | 
                } 
 | 
                dap.SelectCommand.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, 
 | 
                    ParameterDirection.ReturnValue, false, 0, 0, 
 | 
                    string.Empty, DataRowVersion.Default, null)); 
 | 
                return dap; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                return null; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        private SqlCommand CreateCommand(string procName, SqlParameter[] prams) 
 | 
        { 
 | 
            if (this.CnOpen()) 
 | 
            { 
 | 
                SqlCommand cmd = new SqlCommand(procName, MainCn); 
 | 
                cmd.CommandType = CommandType.Text; 
 | 
                cmd.Transaction = MainTran; 
 | 
                if (prams != null) 
 | 
                { 
 | 
                    foreach (SqlParameter parameter in prams) 
 | 
                        cmd.Parameters.Add(parameter); 
 | 
                } 
 | 
                cmd.Parameters.Add( 
 | 
                    new SqlParameter("ReturnValue", SqlDbType.Int, 4, 
 | 
                    ParameterDirection.ReturnValue, false, 0, 0, 
 | 
                    string.Empty, DataRowVersion.Default, null)); 
 | 
                return cmd; 
 | 
            } 
 | 
            else 
 | 
                return null; 
 | 
        } 
 | 
  
 | 
        #region IDisposable 成员 
 | 
  
 | 
        public void Dispose() 
 | 
        { 
 | 
            throw new Exception("The method or operation is not implemented."); 
 | 
        } 
 | 
  
 | 
        #endregion 
 | 
    } 
 | 
} 
 |