using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.Data; using System.Windows.Forms; namespace Pub_Class { public class ClsSqlHelper:IDisposable { private SqlConnection MainCn;//创建连接对象 public string strCon; SqlTransaction MainTran; public string sServer; public string sDataBase ; public string sUser; public string sPassword; //public string sTextBox = "HXErp_Test.ini"; public string sTextBox = "HXErp.ini"; //开始事务 public void BeginTran() { if (!this.CnOpen()) return; MainTran=MainCn.BeginTransaction(); } //结束事务 public void Commit() { MainTran.Commit(); CnClose(); } //回滚事务 public void RollBack() { MainTran.Rollback(); CnClose(); } public ClsSqlHelper() { if (ClsPub.isStrNull(ClsPub.AppPath) == "") { ClsPub.AppPath = System.Environment.CurrentDirectory; //ClsPub.AppPath = @"C:\Windows\System32"; } sServer = ClsIni.ReadIni("Erp", "Server", ClsPub.AppPath + @"\"+sTextBox); sDataBase = ClsIni.ReadIni("Erp", "DataBase", ClsPub.AppPath + @"\" + sTextBox); sUser = ClsIni.ReadIni("Erp", "UserName", ClsPub.AppPath + @"\" + sTextBox); sPassword = ClsIni.ReadIni("Erp", "PassWord", ClsPub.AppPath + @"\" + sTextBox); // } public bool CheckOpen() { if (sServer == "" || sServer == "没有找到!" ) { throw new Exception("错误的服务器名!!" + System.Environment.CurrentDirectory); } if (sDataBase == "" || sDataBase == "没有找到!") { throw new Exception("错误的数据库名!!" +System.Environment.CurrentDirectory); } SqlConnection oCn = new SqlConnection("Data Source=" + sServer + ";DataBase=master;User ID=" + sUser + ";PWD=" + sPassword + ";max pool size=32767"); try { oCn.Open(); return true; } catch (Exception e) { //e.Message = e.Message + "," + sServer + "," + sDataBase; //e. //throw (e); ClsPub.sErrInfo = e.Message + "," + sServer + "," + sDataBase; throw new Exception(e.Message + "," + sServer + "," + sDataBase); } } private bool CnOpen()//OPEN数据库连接 { if (sServer == "" || sServer == "没有找到!") { throw new Exception("错误的服务器名!" + System.Environment.CurrentDirectory); } if (sDataBase == "" || sDataBase == "没有找到!") { throw new Exception("错误的数据库名!"); } if (MainCn==null) { MainCn = new SqlConnection("Data Source=" + sServer + ";DataBase=" + sDataBase + ";User ID=" + sUser + ";PWD=" + sPassword + ";max pool size=32767"); } if (MainCn.State == System.Data.ConnectionState.Closed) { try { MainCn.Open(); return true; } catch (Exception e) { ClsPub.sErrInfo = e.Message + "," + sServer + "," + sDataBase; throw new Exception(e.Message + "," + sServer + "," + sDataBase); } } else return true; } public void CnClose()//关闭数据库连接 { if (MainCn != null) MainCn.Close(); } public 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; } /// /// 执行SQL无返回值 /// /// /// /// public void RunProc(string procName) { if (!this.CnOpen()) { return; //sErrMessage = "连接数据库失败!"; } try { ClsPub.sSQLInfo = procName; SqlCommand cmd = new SqlCommand(procName, MainCn); cmd.CommandTimeout = 600; cmd.Transaction = MainTran; cmd.ExecuteNonQuery(); return; } catch (Exception e) { ClsPub.sErrInfo = e.Message; throw (e); //return; } } /// /// 执行 /// /// /// /// public void RunProc(string procName,ref string sErr) { if (!this.CnOpen()) { sErr = "连接数据库失败!"; return; } try { ClsPub.sSQLInfo = procName; SqlCommand cmd = new SqlCommand(procName, MainCn); cmd.CommandTimeout = 600; cmd.Transaction = MainTran; cmd.ExecuteNonQuery(); return; } catch (Exception e) { sErr =e.Message; ClsPub.sErrInfo = e.Message; throw (e); //return; } } /// /// 递入参数执行SQL并返回DATASET /// /// 执行语句 /// 参数 /// 表名 /// 异常信息 /// public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName ) { SqlDataAdapter dap = CreateDataAdaper(procName, prams); if (dap == null) return null; DataSet ds = new DataSet(); try { ClsPub.sSQLInfo = procName; dap.Fill(ds, tbName); return ds; } catch (Exception e) { ClsPub.sErrInfo = e.Message; throw (e); return null; } } /// /// 执行SQL并返回DATASET /// /// 执行语句 /// 表名 /// 异常信息 /// public DataSet RunProcReturn(string procName, string tbName ) { SqlDataAdapter dap = CreateDataAdaper(procName, null); DataSet ds = new DataSet(); try { ClsPub.sSQLInfo = procName; dap.Fill(ds, tbName); return ds; } catch (Exception e) { ClsPub.sErrInfo = e.Message; throw (e); return null; } } /// /// 执行SQL并返回DATASET和错误信息 /// /// 执行语句 /// 表名 /// 异常信息 /// public DataSet RunProcReturn(string procName, string tbName,ref string sErr) { SqlDataAdapter dap = CreateDataAdaper(procName, null); DataSet ds = new DataSet(); try { ClsPub.sSQLInfo = procName; dap.Fill(ds, tbName); return ds; } catch (Exception e) { sErr = e.Message; ClsPub.sErrInfo = 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; dap.SelectCommand.CommandTimeout = 600; 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.CommandTimeout = 600; 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; } public bool CreateCommand(string procName, byte[] FileList, ref string sErr) { try { if (this.CnOpen()) { SqlCommand cmd = new SqlCommand(procName, MainCn); cmd.CommandTimeout = 600; cmd.Parameters.AddWithValue("@FileList", FileList); cmd.ExecuteNonQuery(); return true; } else { sErr = "连接失败!"; return false; } } catch (Exception e) { sErr = e.Message; return false; } } public SqlDataReader RunReader(string sSQL,string tbName,ref string sErr) { if (!this.CnOpen()) { sErr = "连接数据库失败!"; return null; } try { ClsPub.sSQLInfo = sSQL; SqlCommand cmd = new SqlCommand(sSQL, MainCn); cmd.CommandTimeout = 600; //cmd.Transaction = MainTran; return cmd.ExecuteReader(); } catch (Exception e) { ClsPub.sErrInfo = e.Message; sErr = e.Message; return null; } } #region IDisposable 成员 public void Dispose() { throw new Exception("The method or operation is not implemented."); } #endregion } }