逆水行船

别人的天堂,是我的异乡;无端的繁华,倍添我的惆怅

 

[置顶] 我的C++数据库访问库--临界区处理类

摘要: 在我的C++数据库访问库中,支持线程安全访问,使用临界区处理类实现该功能。 一共有两个类:HisCritical、HisCriticalMng。 HisCritical:主要提供windows临界区的访问,提供构造函数、析构函数、Enter、Leave几个接口。 HisCritical:临界区访问类,主要封装windows临界区的访问,该类主要在栈中使用,利用局部变量的构造和析构函数出入临界区。 阅读全文

posted @ 2012-06-17 07:24 荣- 阅读(821) 评论(0) 推荐(0) 编辑

[置顶] 我的C++数据库访问库

摘要: 下面是我写的一个C++的数据库访问库,该库的目标是屏蔽掉繁琐的操作,以简单的接口,提供基本的访问数据库的功能。该库主要有如下接口: Open:根据用户传入的连接字符串,打开数据库连接。 Close: 关闭已经打开的数据库连接。 ExecuteNoQuery:执行SQL语句(不需要返回结果的,例如添加、删除、编辑) ExecuteScalar:执行SQL语句,返回第一行,第一列的数据。 ExecuteQuery:执行SQL查询,返回一个存储map的vector。 考虑到线程安全,还提供是否使用临界区的选择和数据库类型的选择(目前只支持MySQL)。 阅读全文

posted @ 2012-06-16 17:07 荣- 阅读(3111) 评论(0) 推荐(0) 编辑

[置顶] C++中,以类成员函数指针作为参数对std::map中的元素进行迭代处理

摘要: 在C++中使用Map会遇到迭代Map中元素的问题,使用for循环迭代元素,无形中增加了一层括号;使用函数指针调用类成员函数时,通常做法是,提供一个静态函数作为函数指针指向的函数,在静态函数中提供类指针对成员函数的调用。下面的代码通过foreach模板函数提供解决这两种问题的一个实例。 下面代码还有一个问题没有处理好:foreach的最后一个参数不能是模板参数,有高手能解决这个问题,希望不吝赐教。 阅读全文

posted @ 2011-07-21 13:49 荣- 阅读(5367) 评论(0) 推荐(0) 编辑

[置顶] 我的我的C#数据库操作类(与大家交流)

摘要: 我的数据库操作类包括SqlDBOperate、OracleDBOperate、OleDBOperate、ODBCDBOperate以及其基类DBOperate。SqlDBOperate等类的代码很少,每个类的代码不超过10行。这里面凝聚着我的心血。我是用了几年的功夫重构出来的,在这里贴出来,希望抛砖引玉,与大叫交流技术。 阅读全文

posted @ 2009-10-23 09:42 荣- 阅读(8828) 评论(0) 推荐(1) 编辑

[置顶] 以较少代码实现DataGrid的排序,翻页,删除等功能

摘要: 以较少代码实现DataGrid的排序,翻页,删除等功能。通过主题,母版,面向对象中的继承及多台来减少实现DataGrid功能中的代码。 阅读全文

posted @ 2007-11-27 13:24 荣- 阅读(326) 评论(0) 推荐(0) 编辑

2014年8月21日

学习实践:使用模式,原则实现一个C++自动化测试程序

摘要: 个人编程中比较喜欢重构,重构能够提高自己的代码质量,使代码阅读起来也更清晰。但是重构有一个问题,就是如何保证重构后带代码实现的功能与重构前的一致,如果每次重构完成后,对此不闻不问,则会有极大的风险,如果每次重构后,都进行一边测试,则工作量会很巨大,最终可能是即使代码有重构的欲望,也会尽量克制住,不去重构。除非代码能够进行自动化测试。实际上进行测试的是接口,而不是所有代码,只要能够保持接口不变,自动化测试的工作量也没有想象中的巨大。其实我们在单元测试的时候,会测试各种异常情况,只不过,没有将这些测试写成测试代码罢了。 在Java中有JUnit,在C#中有NUnit,在C++中,笔者并不知道有哪些自动化测试工具(笔者的孤陋寡闻)。于是就产生了自己写一个自动化测试程序的想法。 自动化测试程序本质上应该是一个Command模式的应用案例,将多个Command对象保存起来,这些Command对象中存储着测试函数,在需要的时候,运行这些Command对象,并根据这些Command对象的执行结果判断测试是否通过。 阅读全文

posted @ 2014-08-21 11:14 荣- 阅读(2817) 评论(0) 推荐(0) 编辑

学习实践:使用模式,原则实现一个C++数据库访问类

摘要: 在我参与的多个项目中,大家使用libMySQL操作MySQL数据库,而且是源码即复用,在多个项目中有多套相同或相似的源码,这样的复用方式给开发带来了不变,而且libMySQL的使用比较麻烦,要应对很多的细节,很容易出错。 我要写一个动态链接库,将对libMySQL的操作封装起来,以二进制复用代替源码级复用;要提供线程安全的接口,用户无需关系是否加锁这样细节性的问题,减少出错及死锁的机会,当然也要允许用户自己选择是否线程安全的访问数据库;要简化访问数据库的流程,接口越简单越好。 阅读全文

posted @ 2014-08-21 11:07 荣- 阅读(1863) 评论(0) 推荐(0) 编辑

2014年5月19日

C++字符转换等常用方法

摘要: C++中字符编码格式转换(包括ANSI转换为UTF8,UTF8转换为ANSI,ANSI转换为unicode,unicode转换为ANSI,UTF8转换为unicode,unicode转换为UTF8),大小写转换等常用方法,写在这儿,免得忘掉。 阅读全文

posted @ 2014-05-19 16:50 荣- 阅读(460) 评论(0) 推荐(0) 编辑

2012年7月17日

DLL内存管理模板类

摘要: 在DLL中,经常会遇到堆中内存释放的问题,特别是MT(MTd)下的DLL。 本模板类就是对DLL堆中申请的内存进行管理的。 主要功能: 1: 申请堆中内存; 2: 释放内存时,判断传入的内存指针参数是否是本DLL申请的内存; 3: 析构时,对与没有delete的内存自动delete,以免内存泄漏。 主要接口: 1:T* Create(): 在堆中创建对象,并返回指针,该指针已经被管理。 2: bool Release(T* t):释放堆中释放的对象,并解除对指针的管理。 3: ~DllMemeryMng(): 析构函数,释放未释放的堆对象。 阅读全文

posted @ 2012-07-17 10:51 荣- 阅读(525) 评论(0) 推荐(0) 编辑

字符串处理代码(国际化转换C++版)

摘要: 字符串处理代码主要处理各种字符编码之间的转换。 由unicode转换为utf-8,由utf-8转换为unicode,由unicode转换为ansi、由ansi转换为unicode,由utf-8转换为ansi,由ansi转换为utf-8. 阅读全文

posted @ 2012-07-17 09:03 荣- 阅读(1489) 评论(0) 推荐(0) 编辑

2011年8月26日

批处理文件的学习

摘要: 最近在学习写批处理文件,感觉批处理文件语法和其他语言语法相差不是一般的大。我把最近写的一个自动添加昨日修改文件日志的批处理程序放在这儿:set path=F:\xumingxsh\set upath=F:\xumingxshother\set index=0@echo off&setlocal enabledelayedexpansion set yyyy=%date:~0,4%set mm=%date:~5,2%set dd=%date:~8,2%set /a od=!dd!-1 if !od!==0 call :dd0 if !mm!==0 call :mm0set kk=!yyy 阅读全文

posted @ 2011-08-26 13:03 荣- 阅读(299) 评论(0) 推荐(0) 编辑

2010年3月17日

取得MySQL数据库表,列信息的SQL语句

摘要: /*取得表信息*/select table_Comment as Script, table_Name as TableName, 0 as id, Create_Time as createDate, CASE table_Type WHEN 'BASE TABLE' then 'U' when 'VIEW' then 'V' ELSE table_Type END as tableType,0... 阅读全文

posted @ 2010-03-17 16:50 荣- 阅读(1166) 评论(0) 推荐(0) 编辑

导航