我的程序库: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:

1
2
3
4
5
6
7
8
[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: 返回第一行第一列:

1
2
3
4
5
6
7
8
[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: 使用事务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[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支持如下

1
DBOperate.AddDBCreator<MySQLCreator>(MySQL);

  

posted @   荣--  阅读(179)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示