您的位置:首页 > 数据库

轻松实现C#对Access数据库进行集成管理

2008-06-22 16:12 375 查看
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();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐