HiCSDB是我写的一个通用程序库,地址:https://github.com/xumingxsh/HiCSDB
该库的目标是简化C#的数据库交互操作.
在这个库中,我将数据库的交互操作抽象为一下几个函数:
1: ExecuteNonQuery: 执行无返回值的操作,例如Insert,Update,Delete等
2: ExecuteScalar: 获得查询结果的第一行第一列.
3: ExecuteDataTable: 查询多条记录并返回DataTable.
4: OnTran: 执行事务,参数为一个TransHandler的委托
如何阅读这个程序呢?从HiCSDBTest项目的UnitTestDBOperate_MySQL中查看.
1: 请求多条记录并返回DataTable:
[TestMethod] public void Test_ExecuteDataTable() { DBOperate db = new DBOperate(connString, MySQL); DataTable dt = db.ExecuteDataTable("select table_name from tables limit 10"); Assert.IsTrue(dt != null); Assert.IsTrue(dt.Rows.Count > 0); }
2: 返回第一行第一列:
[TestMethod] public void Test_ExecuteScalar() { DBOperate db = new DBOperate(connString, MySQL); object obj = db.ExecuteScalar("select table_name from tables limit 1"); Assert.IsTrue(obj != null); Assert.IsTrue(obj is String); }
3: 使用事务
[TestMethod] public void Test_ExecuteTrans() { DBOperate db = new DBOperate(connString, MySQL); db.OnTran((DBOperate op)=>{ object val = op.ExecuteScalar("Select Count(1) from tables where table_name=‘CHARACTER_SETS‘"); Assert.IsTrue(Convert.ToInt16(val) == 1); try { int result = op.ExecuteNonQuery("insert into tables() where table_name=‘CHARACTER_SETS‘"); Assert.IsTrue(result == 1); } catch(Exception ex) { ex.ToString(); } return false; }); object ret = db.ExecuteScalar("Select Count(1) from tables where table_name=‘CHARACTER_SETS‘"); Assert.IsTrue(Convert.ToInt16(ret) == 1); }
4: 扩展数据库支持
该库支持添加当前不支持的数据库,只需要实现IDBCreator接口即可.在HiCSDBTest中有一个这样的类MySQLCreator.
添加MySQL支持如下
DBOperate.AddDBCreator<MySQLCreator>(MySQL);
时间: 2024-10-05 21:33:14