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; } } /// /// 转换参数 /// /// 存储过程名称或命令文本 /// 参数类型 /// 参数大小 /// 参数值 /// 新的 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 { SqlCommand cmd = new SqlCommand(procName, MainCn); cmd.Transaction = MainTran; cmd.ExecuteNonQuery(); return; } catch (Exception e) { throw (e); return; } } /// /// 执行 /// /// /// /// 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; } } /// /// 递入参数执行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 { dap.Fill(ds, tbName); return ds; } catch (Exception e) { throw (e); return null; } } /// /// 执行SQL并返回DATASET /// /// 执行语句 /// 表名 /// 异常信息 /// 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; } } /// /// 执行SQL并返回DATASET和错误信息 /// /// 执行语句 /// 表名 /// 异常信息 /// 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 } }