using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using WMS.DBUtility; using System.Data.SqlClient; using Oracle.ManagedDataAccess.Client; namespace WMS.IData { /// /// 数据处理类 /// public class SystemDataObject { #region 数据处理类 private static SystemDataObject dataObject; private static object _lock = new object(); /// /// 通过Singleton模式返回当前数据访问层实例 /// public static SystemDataObject Instance { get { if (dataObject == null) { lock (_lock) { if (dataObject == null) { dataObject = new SystemDataObject(); } } } return dataObject; } } #endregion Model.Base.LogDataModel _logModel; /// /// 日志处理类 /// public Model.Base.LogDataModel logModel { get { lock ("logModel") { return _logModel; } } } #region 返回DataSet数据集 /// /// 返回DataSet数据集 /// /// /// public DataTable GetDataTable(string sqlStr) { return GetDataTable(sqlStr, null); } public DataSet GetDataSet(string sqlStr) { return GetDataSet(sqlStr, null); } /// /// 返回DataSet数据集 /// /// /// public DataSet GetDataSet(string sqlStr, OracleParameter[] param) { // _logModel = new Model.Base.LogDataModel(); DataSet ds = new DataSet(); // _logModel.SqlStr = sqlStr; // logModel.Operator_id = DataProvider.Instance.userNumber; try { if (param == null) { ds = OracleHelper.ExecuteDataset(CommandType.Text, sqlStr); } else { ds = OracleHelper.ExecuteDataset(CommandType.Text,sqlStr, param); } } catch (Exception ex) { // _logModel.Content = "数据库连接错误" + ex.Message; if (ex.Message.ToString().PadLeft(3).ToString().ToUpper() == "ORA") { return null; } // DataProvider.Instance.ErrLog.InsertLog(_logModel); return null; } return ds; } /// /// 返回DataSet数据集 /// /// /// public DataTable GetDataTable(string sqlStr, OracleParameter[] param) { // _logModel = new Model.Base.LogDataModel(); DataTable ds = new DataTable(); // _logModel.SqlStr = sqlStr; try { if (param == null) { ds = OracleHelper.ExecuteDataTable(CommandType.Text, sqlStr); } else { ds = OracleHelper.ExecuteDataTable(CommandType.Text, sqlStr, param); } } catch (Exception ex) { // _logModel.Content = "数据库连接错误" + ex.Message; WMS.Common.LogWriteText.WriteLog(ex.Message + ex.TargetSite); // DataProvider.Instance.ErrLog.InsertLog(_logModel); return null; } return ds; } /// /// 调用存储过程返回DataTable /// /// /// /// public DataTable GetDataTableProc(string sqlStr) { return GetDataTableProc(sqlStr, null); } /// /// 调用存储过程返回DataTable /// /// /// /// public DataTable GetDataTableProc(string sqlStr, OracleParameter[] param) { // _logModel = new Model.Base.LogDataModel(); DataTable ds = new DataTable(); // _logModel.SqlStr = sqlStr; try { if (param == null) { ds = OracleHelper.ExecuteDataTable(CommandType.StoredProcedure, sqlStr); } else { ds = OracleHelper.ExecuteDataTable(CommandType.StoredProcedure, sqlStr, param); } } catch (Exception ex) { // _logModel.Content = "数据库连接错误" + ex.Message; if (ex.Message.ToString().PadLeft(3).ToString().ToUpper() == "ORA") { return null; } WMS.Common.LogWriteText.WriteLog(ex.Message + ex.TargetSite); // DataProvider.Instance.ErrLog.InsertLog(_logModel); return null; } return ds; } /// /// 调用查询存储过程,并且记录错误日志 /// /// /// /// /// /// public DataTable GetDataTableProc(string sqlStr, OracleParameter[] param, int errRow, int errMsg) { // _logModel = new Model.Base.LogDataModel(); DataTable ds = new DataTable(); // _logModel.SqlStr = sqlStr; try { if (param == null) { ds = OracleHelper.ExecuteDataTable(CommandType.StoredProcedure, sqlStr); } else { ds = OracleHelper.ExecuteDataTable(CommandType.StoredProcedure, sqlStr, param); } } catch (Exception ex) { // _logModel.Content = "数据库连接错误" + ex.Message; // DataProvider.Instance.ErrLog.InsertLog(_logModel); return null; } return ds; } #endregion #region 执行sql语句返回执行语句的事务 /// /// 执行sql语句返回执行语句的数量 /// /// /// /// public int ExecuteSqlCommit(string sqlStr, OracleParameter[] param) { int row = 0; // _logModel = new Model.Base.LogDataModel(); // _logModel.SqlStr = sqlStr; try { row = OracleHelper.ExecuteNonQuery(CommandType.Text, sqlStr, param); } catch (Exception ex) { // _logModel.Content = ex.Message; return row; } return row; } /// /// 执行sql语句返回执行语句的数量 /// /// /// public int ExecuteSqlCommit(string sqlStr) { int row = 0; // _logModel = new Model.Base.LogDataModel(); // _logModel.SqlStr = sqlStr; try { row = OracleHelper.ExecuteNonQuery(CommandType.Text, sqlStr); } catch (Exception ex) { // _logModel.Content = ex.Message; return row; } return row; } /// /// 执行sql语句返回执行语句的事务 /// /// /// /// public OracleTransaction ExecuteSql(string sqlStr, OracleParameter[] param) { _logModel = new Model.Base.LogDataModel(); _logModel.SqlStr = sqlStr; try { OracleHelper.ExecuteNonQuery(DataProvider.Instance.TranOracle, CommandType.Text, sqlStr, param); } catch (Exception ex) { _logModel.Content = ex.Message; } return DataProvider.Instance.TranOracle; } /// /// 执行sql语句返回执行语句的事务 /// /// /// /// public OracleTransaction ExecuteSql(string sqlStr) { _logModel = new Model.Base.LogDataModel(); _logModel.SqlStr = sqlStr; try { OracleHelper.ExecuteNonQuery(DataProvider.Instance.TranOracle, CommandType.Text, sqlStr); } catch (Exception ex) { _logModel.Content = ex.Message; } return DataProvider.Instance.TranOracle; } /// /// 执行sql语句,返回执行语句的事务 /// /// /// /// /// /// public OracleTransaction ExecuteProc(string sqlStr, OracleParameter[] param, int errNum, int errMsg) { _logModel = new Model.Base.LogDataModel(); _logModel.SqlStr = sqlStr; //logModel.Operator_id = DataProvider.Instance.userNumber; try { OracleHelper.ExecuteNonQuery(DataProvider.Instance.TranOracle, CommandType.StoredProcedure, sqlStr, param); } catch (Exception ex) { _logModel.Content = ex.Message; } return DataProvider.Instance.TranOracle; } #endregion #region /// /// 执行sql语句集合,返回执行语句的事务 /// /// /// /// /// /// public OracleTransaction ExecuteList(List sqllist, List OracleParameters) { _logModel = new Model.Base.LogDataModel(); string errstr = ""; StringBuilder sqlstr = new StringBuilder(); foreach (string t in sqllist) { sqlstr.Append(t + ";"); } _logModel.SqlStr = sqlstr.ToString(); //logModel.Operator_id = DataProvider.Instance.userNumber; try { OracleHelper.ExecuteNonSQLList(CommandType.Text, sqllist, OracleParameters, ref errstr); } catch (Exception ex) { _logModel.Content = ex.Message; DataProvider.Instance.ErrLog.InsertLog(_logModel); } return DataProvider.Instance.TranOracle; } public OracleTransaction ExecuteList(List sqllist, ref string str_msg) { _logModel = new Model.Base.LogDataModel(); string errstr = ""; StringBuilder sqlstr = new StringBuilder(); foreach (string t in sqllist) { sqlstr.Append(t + ";"); } _logModel.SqlStr = sqlstr.ToString(); //logModel.Operator_id = DataProvider.Instance.userNumber; try { OracleHelper.ExecuteNonSQLList(CommandType.Text, sqllist, ref errstr); } catch (Exception ex) { str_msg = ex.Message; _logModel.Content = ex.Message; DataProvider.Instance.ErrLog.InsertLog(_logModel); } return DataProvider.Instance.TranOracle; } ///// ///// 执行sql语句集合,返回执行语句的事务 ///// ///// ///// public OracleTransaction ExecuteList(List sqllist) { _logModel = new Model.Base.LogDataModel(); string errstr = ""; StringBuilder sqlstr = new StringBuilder(); foreach (string t in sqllist) { sqlstr.Append(t + ";"); } try { OracleHelper.ExecuteNonSQLList(CommandType.Text, sqllist, ref errstr); } catch (Exception ex) { _logModel.Content = ex.Message; DataProvider.Instance.ErrLog.InsertLog(_logModel); } return DataProvider.Instance.TranOracle; } #endregion } }