zoukankan      html  css  js  c++  java
  • 我的程序库: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);
    

      

  • 相关阅读:
    hdu 4027 Can you answer these queries? 线段树
    ZOJ1610 Count the Colors 线段树
    poj 2528 Mayor's posters 离散化 线段树
    hdu 1599 find the mincost route floyd求最小环
    POJ 2686 Traveling by Stagecoach 状压DP
    POJ 1990 MooFest 树状数组
    POJ 2955 Brackets 区间DP
    lightoj 1422 Halloween Costumes 区间DP
    模板 有源汇上下界最小流 loj117
    模板 有源汇上下界最大流 loj116
  • 原文地址:https://www.cnblogs.com/Rong-/p/5547091.html
Copyright © 2011-2022 走看看