using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.OleDb; using System.Windows.Forms; namespace Lskj_SyncAccessData { public class AccessDBConfig { // 连接数据源 private OleDbConnection conn = null; private static string connStr = string.Empty; private static AccessDBConfig _instance = null; /// /// DBConfig静态单例对象 /// /// The instance. public static AccessDBConfig Instance { get { if (_instance == null) { _instance = new AccessDBConfig(); } return _instance; } } /// /// 说明:创建数据库连接 /// 创建人:钱雄 /// 创建日期 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// true if XXXX, false otherwise. public OleDbConnection CreateConnection(string conStr) { connStr = conStr; if (conn != null) { try { conn.Close(); conn.Dispose(); } catch (Exception) { } conn = null; } try { conn = new OleDbConnection(connStr); if (conn.State == ConnectionState.Closed) { conn.Open(); } return conn; } catch (Exception ex) { MessageBox.Show(ex.Message); return null; } } /// /// 说明:查询Access数据库表中是否包含某个字段 /// 创建人:龚宇超 /// 创建日期:2017-08-07 /// 修改人: /// 修改日期: /// 修改备注: /// 版本:1.0 /// /// true if XXXX, false otherwise. public bool checkField(String sTblName, String sFldName) { bool isExist = false; try { //OleDbConnection aConnection = new OleDbConnection(DB.getConnectStr()); //aConnection.Open(); object[] oa = { null, null, sTblName, sFldName }; DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Columns, oa); if (schemaTable.Rows.Count == 0) { isExist = false; } else { isExist = true; } //MessageBox.Show((schemaTable.Rows.Count == 0 ? "不存在" : "存在")); //aConnection.Close(); } catch (Exception err) { MessageBox.Show(err.Message); } return isExist; } /// /// 执行SQL语句,返回影响的记录数 /// /// SQL语句 /// 影响的记录数 public int ExecuteSql(string SQLString) { using (OleDbConnection connection = new OleDbConnection(connStr)) { using (OleDbCommand cmd = new OleDbCommand(SQLString, connection)) { try { connection.Open(); int rows = cmd.ExecuteNonQuery(); return rows; } catch (System.Data.OleDb.OleDbException E) { connection.Close(); throw new Exception(E.Message); } } } } /// /// 执行返回多个查询时使用,返回DataTable类型 /// /// Sql命令 /// SQL语句(CommandType.Text)或者存储过程(CommandType.StoredProcedure) /// 参数 /// public DataTable ExecuteDataTable(string sql) { DataTable dt = new DataTable(); try { //通过adapter读取数据。 using (OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connStr)) { adapter.Fill(dt); return dt; } } catch (Exception) { throw; } } /// /// 根据SQL查询返回DataSet对象,如果没有查询到则返回NULL /// /// 查询语句 /// DataSet public DataSet GetDataSet(string sql) { DataSet ds = new DataSet(); try { this.CreateConnection(connStr); OleDbCommand cmd = new OleDbCommand(sql, conn); cmd.CommandTimeout = 20; System.Data.OleDb.OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); adapter.Fill(ds, "tempTable"); conn.Close(); } catch (Exception e) { ds = null; } return ds; } /// /// 根据SQL查询返回DataSet对象,如果没有查询到则返回NULL /// /// 查询语句 /// 开始记录数 /// 最大记录数 /// DataSet public DataSet GetDataSet(string sql, int sRecord, int mRecord) { DataSet ds = new DataSet(); try { OleDbCommand cmd = new OleDbCommand(sql, conn); cmd.CommandTimeout = 20; System.Data.OleDb.OleDbDataAdapter adapter = new OleDbDataAdapter(cmd); adapter.Fill(ds, sRecord, mRecord, "tempTable"); } catch (Exception e) { ds = null; } return ds; } /// /// 对数据库的增,删,改的操作 /// /// SQL语句 /// 是否成功 public bool ExecuteDataBase(string sql) { bool succeed = false; int cnt = 0; try { OleDbCommand cmd = new OleDbCommand(sql, conn); cmd.CommandTimeout = 20; if (this.Open()) cnt = cmd.ExecuteNonQuery(); } catch (Exception e) { e.ToString(); } finally { if (cnt > 0) { succeed = true; } } return succeed; } /// /// 获得该SQL查询返回的第一行第一列的值,如果没有查询到则返回NULL /// /// 查询语句 /// 返回的第一行第一列的值 public string GetScalar(string sql) { string str = null; try { OleDbCommand cmd = new OleDbCommand(sql, conn); if (this.Open()) str = cmd.ExecuteScalar().ToString(); } catch (Exception e) { e.ToString(); } return str; } /// /// 获得该SQL查询返回DataTable,如果没有查询到则返回NULL /// /// 查询语句 /// public DataTable GetDataTable(string sql) { DataTable tb = null; DataSet ds = this.GetDataSet(sql); if (ds != null) { tb = ds.Tables["tempTable"]; } return tb; } /// /// 打开数据库连接. /// private bool Open() { bool succeed = false; try { if (conn.State == System.Data.ConnectionState.Closed) { conn.Open(); succeed = true; } else if (conn.State == System.Data.ConnectionState.Broken) { conn.Close(); conn.Open(); succeed = true; } else if (conn.State == System.Data.ConnectionState.Open) { succeed = true; } } catch (Exception e) { e.ToString(); } return succeed; } /// /// 关闭数据库连接 /// public void Close() { if (conn != null) { conn.Close(); } } /// /// 释放数据库连接资源 /// public void Dispose() { if (conn != null) { conn.Dispose(); conn = null; } } } }