| using System; | 
| using System.Collections.Generic; | 
| using System.Text; | 
| using System.Data.SqlClient; | 
| using System.Data; | 
| using System.Windows.Forms; | 
|   | 
| namespace HuanXin.ERP | 
| { | 
|     class ClsCN: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 ClsCN() | 
|         { | 
|             ClsIni oIni = new ClsIni(); | 
|             sServer = oIni.ReadIni("Erp", "Server", "HXErp.ini"); | 
|             sDataBase = oIni.ReadIni("Erp", "DataBase", "HXErp.ini"); | 
|             sUser = oIni.ReadIni("Erp", "UserName", "HXErp.ini"); | 
|             sPassword = oIni.ReadIni("Erp", "PassWord", "HXErp.ini"); | 
|         } | 
|   | 
|         public bool CheckOpen() | 
|         { | 
|             SqlConnection oCn = new SqlConnection("Data Source=" + sServer + ";DataBase=" + sDataBase + ";User ID=" + sUser + ";PWD=" + sPassword + " "); | 
|             try | 
|             { | 
|                 oCn.Open(); | 
|                 return true; | 
|             } | 
|             catch (Exception e) | 
|             { | 
|                 return false; | 
|             } | 
|         } | 
|   | 
|         private bool  CnOpen()//OPEN数据库连接 | 
|         { | 
|             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) | 
|                 { | 
|                     return false ; | 
|                 } | 
|             } | 
|             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; | 
|         } | 
|   | 
|         //public int RunProc(string procName,SqlParameter[] prams) | 
|         //{ | 
|         //    SqlCommand cmd = CreateCommand(procName, prams); | 
|         //    if (cmd == null) | 
|         //        return 0; | 
|         //    cmd.ExecuteNonQuery(); | 
|         //    return (int)cmd.Parameters["ReturnValue"].Value; | 
|         //} | 
|         public int RunProc(string procName) | 
|         { | 
|             if (!this.CnOpen()) | 
|                 return 0; | 
|             SqlCommand cmd = new SqlCommand(procName, MainCn); | 
|             cmd.Transaction = MainTran; | 
|             cmd.ExecuteNonQuery(); | 
|             return 1; | 
|         } | 
|   | 
|         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) | 
|             { | 
|                 //MessageBox.Show("读取失败,请与管理员联系!"+e.Message); | 
|                 return null; | 
|             } | 
|         } | 
|   | 
|         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) | 
|             { | 
|                 //MessageBox.Show("读取失败,请与管理员联系!" + e.Message); | 
|                 return null; | 
|             } | 
|         } | 
|   | 
|         private SqlDataAdapter CreateDataAdaper(string procName, SqlParameter[] prams) | 
|         { | 
|             if (this.CnOpen()) | 
|             { | 
|                 SqlDataAdapter dap = new SqlDataAdapter(procName, MainCn); | 
|                 dap.SelectCommand.CommandType = CommandType.Text; | 
|                 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 | 
|     } | 
| } |