| 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 | 
|     } | 
| } |