VC++中使用DB-Library编程(二)(SQL Server)
作者:张尧伟
自从上次在VCKBASE 在线杂志》第三十期刊登了“VC++中使用DB-Library编程(SQL Server)”一文之后,得到了很多朋友的支持和鼓励,有很多朋友提出了宝贵建议,并指出了其中的不足和错误,最近利用业余时间,将原来提供的DBLibrary类重新改写,这次是以动态库(DLL)的方式实现的,在新版的DBLibrary中,有以下变动:
将原有的DBLibrary类细分为以下几个类
CDBError——错误处理类,是所有类的父类
CDBSession——处理连接会话类
CDBStatement——处理用户提交的SQL请求,与CDBSession有关联
CDBTable——处理CDBStatement返回的结果集,主要适应有多次循环遍历结果集的需求
CColumn——定义表列类
CBatchCopy——数据批量拷贝类(尚未完成)
CDBStoreProc——执行存储过程,此类针对无结果集返回的存储过程(尚未完成),
有结果集返回的存储过程可以使用CDBStatement类的Open方法来完成
由原来的类转为动态连接库的方式(dblib.dll)
修改了原来错误处理类中有的错误信息无法捕捉,错误捕捉更完整
修改后的版本号改为 V2.0.1(Bata) ,可以使用getVerInfo()取得
修正了Version 1.0(测试版)处理结果集中的空值异常
目前支持的数据类型:
[char]
[varchar]
[nchar]
[int]
[bit]
[decimal]
[numeric]
[money]
[float]
[smallint]
[smallmoney]
[real]
[text]
[tinyint]
[datetime]
[nvarchar]
[smalldatetime],没有列出的,暂不支持,以后将会进一步完善。
本次设计采用了UML建模方法,也是最近刚学习的,请高手指点。
以下是用例图:

以下是类图,如[图一]:

以下是DBStatement的时序图:

以下是DBTable的时序图:

具体的实现,请看源程序。解包后有3个文件:
dblib.rar 是源程序文件;
createDemo.sql 是建库脚本;
insertvalue.sql 是初始化表脚本;
修改相应数据库文件存放路径即可。程序已在win2000server+MS SQL Server2000 + vc++6.0上调式通过。
注:在使用之前,请安装SQL Server的客户端开发工具[使用自定义安装并选择"开发工具"下的"头和库"])。第一次使用的朋友,请参考 VCKBASE 在线杂志》第三十期 的“VC++中使用DB-Library编程(SQL Server)”的介绍。
因才学C++不久,很多东西还在摸索之中,UML也是刚学的,有很多都不懂,请高手指点。
E-Mail:ynzhangyao@163.com,ynzhangyao@sina.com