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

      

  • 相关阅读:
    杭电2074
    关于大整数n!的问题!
    杭电2053
    大整数乘法(高精度)
    JS:获取框架内容
    JQ:hover延迟效果
    jQ+Ajax+PHP 简单实例
    js节省document.getElementById("xxx")的方法
    QQ一键登录功能的实现过程
    点击文字出现文本框
  • 原文地址:https://www.cnblogs.com/Rong-/p/5547091.html
Copyright © 2011-2022 走看看