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; } } /// /// 转换参数 /// /// 存储过程名称或命令文本 /// 参数类型 /// 参数大小 /// 参数值 /// 新的 parameter 对象 public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value) { return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); } /// /// 初始化参数值 /// /// 存储过程名称或命令文本 /// 参数类型 /// 参数大小 /// 参数方向 /// 参数值 /// 新的 parameter 对象 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 } }