我的程序库:HiCSDB

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

  

原文地址:https://www.cnblogs.com/Rong-/p/5547091.html