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