原创C#操作数据库的源代码,支持SqlServer, Access, Oracle, Odbc, MySql数据库,包含查询、更新、数据表操作、事务等,一直应用于我们开发的软件,现在拿出来共享,方便初学者学习和使用,欢迎提出宝贵意见。
下载:源代码下载
解压缩后包含3个文件:DataBase.cs(数据库操作),Convert.cs(数据类型转换,被前者引用),MySql.Data.dll(MySql连接模块,网上下载的)。
使用方法:在自己的项目里点右键-添加-现有项,选择前两个cs文件,在引用上点右键-添加引用-浏览,选择MySql.Data.dll。由于支持Oracle操作,所以需要在引用中添加System.Data.OracleClient。
代码使用方法:
string SQLServer = "Data Source = 127.0.0.1; Initial Catalog = TestDB; User ID = sa; PWD = pw";
string Oracle = "Data Source=orcl;Persist Security Info=True;User ID=sa;Password=pw;Unicode=True";
string Access = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\db.mdb";
string Odbc = "DSN=mylink;UID=sa;PWD=123456";
string MySql = "Database = 'wp'; Data Source = 'localhost'; User Id = 'root'; Password = 'root'; charset = 'utf8'; pooling = true";
HYCommon.DataBase db = new HYCommon.DataBase(SQLServer, HYCommon.DataBase.ServerTypes.SqlServer);
//属性:
//db.Timeout = 30;//获取或设置超时时间
//db.ShowErrorMessageBox = true;//是否显示错误信息对话框
//db.ConnectionString//获取或设置数据库连接语句
//db.ErrorMessage//获得错误信息,错误信息会自动写入error.log文件
//事件:
//出现错误时触发
db.DataBaseErrorHappend += Db_DataBaseErrorHappend;
//获取每一步操作日志事件
db.DataBaseMessageRecieved += Db_DataBaseMessageRecieved;
//方法:
//测试数据库连接
bool conn = db.TestConnection(true);//参数:是否弹出对话框显示连接结果
//查询数据表
DataTable dt = db.GetDataTable("select * from t");
//更新数据表
int excode = db.UpDateDataTable("select * from t", dt);
//查询第一个值
object value = db.GetExecuteScalar("select top 1 col from t");
//新增
int excode = db.GetExecuteNonQuery("insert into t (col) values ('123')");//返回受影响的行数
//获取insert时新增的自动编号值
int newID = db.GetIdentity(true);
//执行更新
int excode = db.GetExecuteNonQuery("update t set col='123' where ID=1");//不加第二个参数自动关闭连接
//执行后不关闭连接
int excode = db.GetExecuteNonQuery("update t set col='123' where ID=1", false);
db.CloseCon();//关闭连接
//获取服务器时间
DateTime date = db.GetDate(true);//参数:是否自动关闭连接
//高效率批量添加记录
int excode = db.SqlBulkCopy("tableName", dataTable, true);
//返回第一条记录的object[]数组
object[] valueList = db.GetRowObjectArray("select * from t", true);
//返回第一条记录的Dictionary<string, object>,key为字段名
Dictionary<string, object> dict = db.GetRowDictionary("select * from t", true);
//事务操作
db.BeginTransaction();//开始事务
int excode = db.GetExecuteNonQuery("update t set col='123' where ID=1", false);
if (db.RollBacked)//出错,全部操作已回滚并且关闭连接
return;
int excode = db.GetExecuteNonQuery("update a set col='123' where ID=1", false);
if (db.RollBacked)//出错,全部操作已回滚并且关闭连接
return;
db.EndTransaction();//结束事务并且关闭连接
//拼接Insert命令
string cmd = HYCommon.DataBase.InsertFormat("tablename", "n col1,c col2,c col3", 1, "123", "abc");
//生成:"Insert into tablename (col1,col2,col3)values(1,'123','abc')"
//拼接Update命令
cmd = HYCommon.DataBase.UpdateFormat("tablename", "ID=1", "n col1,c col2,c col3", 1, "123", "abc");
//生成:"Update tablename set col1=1,col2='123',col3='abc' where ID=1"
详细功能和参数请看源代码。