using System;
using System.Data;
using System.Data.OleDb;
public class DataManager : WorkSystem.DisposeBase
{
/*==================================================
Code By Icyplayer
E-Mail:Icyplayer@126.com
请尊重原创,使用请保留此信息
====================================================*/
/// <summary>
///
/// 该类实现了操作Access数据库的功能
///
/// 功能1:所有结果以DataTable形式返回
/// 功能2:返回的DataTable可以进行修改再更新到数据库中
/// 功能3:提供记录插入功能,方便使用
///
/// 注意:进入修改模式时,在没有进行update操作之前,
/// 再次进入修改模式将覆盖上次的修改记录信息。
///
/// example1:
/// DataManager dm;
/// dm = new DataManager("c://db1.mdb");
/// dm.Open();
/// DataTable dt = new DataTable();
/// dt = dm.Select("select * from [news]");
/// example2:
/// DataManager dm;
/// dm.Open("c://db1.mdb");
/// dt = dm.SelectWithUpdate("select * from [users]");
/// //此时可修改dt的数据
/// dm.Update(dt);
///example3:
/// DataManager dm;
/// dm.DataSource = "c://db1.mdb";
/// dm.Open();
/// dt = dm.InsertMode("table1");
/// //此时dt具备了table1的结构,可以插入数据
/// dm.Update(dt);
/// </summary>
string _dbscr = "";//access数据库文件
System.Data.OleDb.OleDbConnection _conn; //access数据库连接
System.Data.OleDb.OleDbDataAdapter _dap;//当有更新操作时,用来保存数据信息
System.Data.OleDb.OleDbCommandBuilder _cmdb;//当有更新操作时,配合OleDbDataAdapter使用
//构造函数,不指定任何数据
public DataManager()
{
Open(Gproc.DataSource);
}
//构造函数,指定access数据库文件
public DataManager(string DataSource)
{
Open(DataSource);
}
~DataManager()
{
Close();
GC.Collect();
}
//获取或指定access数据库文件
public string DataSource
{
get
{
return _dbscr;
}
set
{
_dbscr = value;
}
}
//打开指定数据库文件
public void Open(string DataSource)
{
_dbscr = DataSource;
Open();
}
//打开已经设定好的数据库文件
public void Open()
{
_conn = new OleDbConnection();
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + _dbscr;
_conn.ConnectionString = connstr;
_conn.Open();
}
//进入修改模式
//执行SQL语句,将响应的数据填充到DataTable中
//用户可修改数据后再调用Update(DataTable)进行更新操作
public System.Data.DataTable SelectWithUpdate(string SQLCmd)
{
System.Data.DataTable dt = new DataTable();
_dap = new OleDbDataAdapter(SQLCmd,_conn);
_cmdb = new OleDbCommandBuilder(_dap);
_dap.Fill(dt);
return dt;
}
//进入修改模式
//输入需要操作的表名,返回表结构的DataTable
//用户添加数据后再调用Update(DataTable)进行更新操作
public System.Data.DataTable InsertMode(string TableName)
{
System.Data.DataTable dt = new DataTable();
_dap = new OleDbDataAdapter("select * from " + TableName + "where false",_conn);
_cmdb = new OleDbCommandBuilder(_dap);
_dap.Fill(dt);
return dt;
}
//关闭修改模式
//根据DataTable进行更新操作
public bool Update(System.Data.DataTable DataTableSource)
{
_dap.Update(DataTableSource);
_dap.Dispose();
_dap = null;
_cmdb.Dispose();
_cmdb = null;
return true;
}
//执行SQL语句,将响应的数据填充到DataTable中,不能进行更新操作
public System.Data.DataTable Select(string SQLCmd)
{
System.Data.OleDb.OleDbDataAdapter da;
System.Data.DataTable dt = new DataTable();
da = new OleDbDataAdapter(SQLCmd,_conn);
da.Fill(dt);
da.Dispose();
return dt;
}
//执行删除操作的SQL语句
public bool Delete(string SQLCmd)
{
System.Data.OleDb.OleDbCommand cmd;
cmd = new OleDbCommand(SQLCmd,_conn);
cmd.ExecuteNonQuery();
return true;
}
//关闭sql连接
public void Close()
{
try
{
_dap = null;
_cmdb = null;
_conn.Close();
_conn.Dispose();
_conn = null;
}
catch
{
}
}
protected override void Dispose(bool disposing)
{
Close();
base.Dispose(disposing);
GC.Collect();
}
}
轻松实现C#对Access数据库进行集成管理
最新推荐文章于 2022-10-20 08:00:15 发布