using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Text; namespace AccessStudy.Core { public class OledbUtil : IDisposable { public OleDbConnection DbConnection { get; set; } public OledbUtil() { var accessFile = $"{AppDomain.CurrentDomain.BaseDirectory}AccessDB\\Demo.accdb"; var connetString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={accessFile}"; DbConnection = new OleDbConnection(connetString); } public OledbUtil(string connetString) { DbConnection = new OleDbConnection(connetString); } public OledbUtil(OleDbConnectionStringBuilder connectionStringBuilder) { DbConnection = new OleDbConnection(connectionStringBuilder.ConnectionString); } /// /// 表是否存在 /// public bool HasDataTable(string dataTableName) { var hosTable = false; try { OpenConnect(); hosTable = DbConnection.GetSchema("Tables", new string[4] { null, null, dataTableName, "TABLE" }).Rows.Count > 0; } catch (Exception ex) { hosTable = false; throw ex; } finally { CloseConnect(); } return false; } /// /// 获取DataSet /// public DataSet GetDataSet(string dataTableName) { DataSet dataSet = new DataSet(); try { OpenConnect(); var command = new OleDbCommand() { Connection = DbConnection, CommandType = CommandType.Text, CommandText = $"select * from {dataTableName};", }; var adapter = new OleDbDataAdapter(command); adapter.Fill(dataSet); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { CloseConnect(); } return dataSet; } /// /// 获取DataSet /// public DataSet GetDataSet(string sqlText, List parameters = null) { DataSet dataSet = new DataSet(); try { OpenConnect(); var command = new OleDbCommand() { Connection = DbConnection, CommandType = CommandType.Text, CommandText = sqlText, }; if (parameters != null) { command.Parameters.AddRange(parameters.ToArray()); } var adapter = new OleDbDataAdapter(command); adapter.Fill(dataSet); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { CloseConnect(); } return dataSet; } /// /// 获取DataTable /// public DataTable GetDataTable(string dataTableName) { DataSet dataSet = GetDataSet(dataTableName); return dataSet.Tables[0]; } /// /// 获取DataTable /// public DataTable GetDataTable(string sqlText, List parameters = null) { DataSet dataSet = GetDataSet(sqlText, parameters); return dataSet.Tables[0]; } /// /// 获取DataReader /// 切记:用完之后主动关闭连接 /// public OleDbDataReader GetDataReader(string dataTableName) { OleDbDataReader dataReader = null; try { OpenConnect(); var command = new OleDbCommand() { Connection = DbConnection, CommandType = CommandType.Text, CommandText = $"select * from {dataTableName};", }; dataReader = command.ExecuteReader(); } catch (Exception ex) { CloseConnect(); Console.WriteLine(ex.Message); } finally { //CloseConnect(); } return dataReader; } /// /// 获取DataReader /// 切记:用完之后主动关闭连接 /// public OleDbDataReader GetDataReader(string sqlText, List parameters = null) { OleDbDataReader dataReader = null; try { OpenConnect(); var command = new OleDbCommand() { Connection = DbConnection, CommandType = CommandType.Text, CommandText = sqlText, }; if (parameters != null) { command.Parameters.AddRange(parameters.ToArray()); } dataReader = command.ExecuteReader(); } catch (Exception ex) { CloseConnect(); Console.WriteLine(ex.Message); } finally { //CloseConnect(); } return dataReader; } /// /// 获取第一行第一列的值 /// 不存在则为null /// public object GetScalar(string sqlText, List parameters = null) { object result = null; try { OpenConnect(); var command = new OleDbCommand() { Connection = DbConnection, CommandType = CommandType.Text, CommandText = sqlText, }; if (parameters != null) { command.Parameters.AddRange(parameters.ToArray()); } result = command.ExecuteScalar(); } catch (Exception ex) { throw ex; } finally { CloseConnect(); } return result; } /// /// 执行非查询语句 /// /// 受影响行数 public int ExecuteNonQuery(string sqlText, List parameters = null) { var result = 0; try { OpenConnect(); var command = new OleDbCommand() { Connection = DbConnection, CommandType = CommandType.Text, CommandText = sqlText, }; if (parameters != null) { command.Parameters.AddRange(parameters.ToArray()); } result = command.ExecuteNonQuery(); } catch (Exception ex) { throw ex; } finally { CloseConnect(); } return result; } /// /// 打开当前连接 /// public void OpenConnect() { if (DbConnection.State == ConnectionState.Closed) { DbConnection.Open(); } } /// /// 关闭当前连接 /// public void CloseConnect() { if (DbConnection.State != ConnectionState.Closed) { DbConnection.Close(); } } public void Dispose() { if (DbConnection.State == ConnectionState.Open) { DbConnection.Close(); } DbConnection.Dispose(); } } }