Files
zszq-trs/YLErpDAL/Helpers/DbHelper.cs
T
2024-05-09 14:06:26 +08:00

104 lines
3.0 KiB
C#

using Oracle.ManagedDataAccess.Client;
using System.Data;
namespace YLErp.Helpers
{
public class DbHelper : IDisposable
{
private readonly OracleConnection _con;
private readonly object _syncLock = new object();
private bool _runStatus = false;
public DbHelper(string connString)
{
_con = new OracleConnection(connString);
_con.Open();
_runStatus = true;
}
~DbHelper()
{
Dispose();
}
public void Dispose()
{
if (_runStatus)
{
lock (_syncLock)
{
if (_runStatus)
{
_runStatus = false;
_con.Close();
_con.Dispose();
}
}
}
}
public void ExecuteSql(string sqlStr, Action<OracleDataReader> func)
{
var cmd = new OracleCommand(sqlStr, _con)
{
CommandType = CommandType.Text//大容量数据,可以进行修改,使用DataSet和DataAdapter
};
using (var dr = cmd.ExecuteReader())
{
while (dr.Read())
{
func?.Invoke(dr);
}
}
}
public DataSet ExecuteSqlQuery(string sqlStr)
{
var cmd = new OracleCommand(sqlStr, _con)
{
CommandType = CommandType.Text//大容量数据,可以进行修改,使用DataSet和DataAdapter
};
var resultsDataSet = new DataSet();
var adapter = new OracleDataAdapter(cmd);
adapter.Fill(resultsDataSet);
return resultsDataSet;
}
public DataTable ExecuteSqlQueryDataTable(string sqlStr)
{
var cmd = new OracleCommand(sqlStr, _con)
{
CommandType = CommandType.Text//大容量数据,可以进行修改,使用DataSet和DataAdapter
};
var resultsDataTable = new DataTable();
var adapter = new OracleDataAdapter(cmd);
adapter.Fill(resultsDataTable);
return resultsDataTable;
}
public void ExecuteNoSqlsQuery(List<string> sqlStrList)
{
foreach (var itemSql in sqlStrList)
{
try
{
LogFactory.GetLogger("ExecuteNoSqlsQuery").Info($"开始执行:{itemSql}");
using (OracleCommand cmd = new OracleCommand())
{
cmd.Connection = _con;
cmd.CommandText = itemSql;
cmd.ExecuteNonQuery();
}
}
catch (Exception ex)
{
LogFactory.GetLogger("ExecuteNoSqlsQuery").Error(ex);
}
LogFactory.GetLogger("ExecuteNoSqlsQuery").Info($"结束执行:{itemSql}");
}
}
}
}