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

  

时间: 2024-10-05 21:33:14

我的程序库:HiCSDB的相关文章

Windows2003系统问题:“无法加载安装程序库wbemupgd.dll,或是找不到函数OcEntry.

“无法加载安装程序库wbemupgd.dll,或是找不到函数OcEntry.请与您的系统管理员联系.特定错误码是 0x7e;" 然后是警告框: " 无法初始化应用程序." WINDOWS2003系统添加删除windows组件坏了 我的电脑--属性--高级--环境变量--path里面编辑在变量值后面加上 ;SystemRoot%system32;%SystemRoot%;%SystemRoot%System32Wbem 保存后就可以恢复了

数据抽取工具——DMCTextFilter V4.2(纯文本抽出通用程序库)

DMCTextFilter V4.2是由北京红樱枫软件有限公司研制和开发的纯文本抽出通用程序库产品.本产品可以从各种各样的文档格式的数据中或从插入的OLE对象中,完全除掉特殊控制信息,快速抽出纯文本数据信息.便于用户实现对多种文档数据资源信息进行统一管理,编辑,检索和浏览.本产品采用了先进的多语言.多平台.多线程的设计理念,支持多国语言(英语,中文简体,中文繁体,日本语,韩国语),多种操作系统(Windows,Solaris,Linux,IBM AIX,Macintosh,HP-UNIX),多种

数据抽取——纯文本抽出程序库DMCTextFilter

数据抽取工具 纯文本抽出程序库DMCTextFilter DMCTextFilter V4.2是由北京红樱枫软件有限公司研制和开发的纯文本抽出通用程序库产品.本产品可以从各种各样的文档格式的数据中或从插入的OLE对象中,完全除掉特殊控制信息,快速抽出纯文本数据信息.便于用户实现对多种文档数据资源信息进行统一管理,编辑,检索和浏览. 一.应用案例 在实际的推广和应用中,红樱枫的通用文本抽出程序软件被应用到了多个领域,如:信息资源开发利用,智能搜索引擎,情报分析和服务,信息安全,企业知识门户,数字图

More Effective C++ 条款23 考虑使用其他程序库

1. "理想的程序库应该小,快速,威力强大,富有弹性,有扩展性,直观,可广泛运用,有良好支持,使用时没有束缚,而且没有'臭虫'".但实际上这种程序库是不可能实现的:要针对速度和大小做优化,往往要牺牲移植性;要有丰富的机能,结果可能不够直观......一个程序库往往要权衡各方面得失,采取折中的方法来实现. 2. 不同的程序库侧重点可能不一样,即使两个程序库机能类似,也可能有不同的性能表现. 考虑iostream和stdio程序库,stdio提供的I/O操作速度通常比iostream快,可

你应该更新的Java知识之常用程序库【转载】

在很多人眼中,Java 已经是一门垂垂老矣的语言,但并不妨碍 Java 世界依然在前进.如果你曾离开 Java,云游于其它世界,或是每日只在遗留代码中挣扎,或许是时候抬起头,看看老 Java 中的新东西. Guava Guava[gwɑ:v?],一句话,只要你做Java项目,就应该用Guava. guava 是 Google 出品的一套 Java 核心库,在我看来,它甚至应该是 JDK 的一部分.作为一个 Java 程序员,如果你没抱怨过JDK的设计,只能说明一点,你写得程序还是太少.正是JDK

转载:Pixhawk源码笔记六:源码预览与APM:Copter程序库

转自:新浪@WalkAnt 第七部分 源代码预览与APM:Copter程序库 英文参考:http://dev.ardupilot.com/wiki/apmcopter-code-overview/ 本节来源:http://liung.github.io/blog/apm/2014-08-30-APM-Arducopter代码预览.html         APM::Copter代码主要放在ArduCopter文件夹中,并且和ArduPlane和ArduRover使用同样的库文件. 下面这张图展示

我想写一个Linux下的C++程序库--记我的C++库设计历程:设计一个TCP服务程序

我想写一个Linux下的C++程序库,实现一些常用的功能. 我首先想到的就是实现一个TCP监听程序.该程序应该具有哪些功能呢? 1: 启动/停止监听 2: 有客户端连接时,通知调用者 3: 与客户端断开时,通知调用者 4: 有消息到达时,通知调用者 5: 尽量避免程序退出时有没有close的socket. 该程序的大体接口及结构主要用一个类表示,内容如下: #pragma once #include <functional> namespace Hi { /* * @ brief TCP监听会

Boost程序库完全开发指南——深入C++“准”标准库(第3版)

内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Boost 社区开发并维护,使用了许多现代C++编程技术,内容涵盖字符串处理.正则表达式.容器与数据结构.并发编程.函数式编程.泛型编程.设计模式实现等许多领域,极大地丰富了C++的功能和表现力,能够使C++软件开发更加简捷.优雅.灵活和高效. <Boost程序库完全开发指南——深入C++“准”标准库(

数据抽取工具——DMCTextFilter(纯文本抽出通用程序库)

DMC文本抽出支持office.pdf.邮件.压缩文件等几乎所有软件的各个版本的文本提取以及邮件中的附件.压缩文件中的压缩文件.嵌入文件中的文件的文本提取. DMCTextFilter 是由北京红樱枫软件有限公司研制和开发的纯文本抽出通用程序库产品.本产品可以从各种各样的文档格式的数据中或从插入的OLE对象中,完全除掉特殊控制信息,快速抽出纯文本数据信息.便于用户实现对多种文档数据资源信息进行统一管理,编辑,检索和浏览.本产品采用了先进的多语言.多平台.多线程的设计理念,支持多国语言(英语,中文