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
}
}