104 lines
3.0 KiB
C#
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}");
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|