编 者 的 话
信息技术是 21 世纪最有发展潜力的技术之一,信息的表示、获取、存储以及利用导致
了新世纪软件技术的不断发展,数据库技术是所有信息技术的基础,离开了数据,信息便
没有了立足之地,因而显示出数据库技术的关键地位。
数据库应用主要是面向各种信息的,包括商业的和非商业的,包括元数据和多媒体信
息。当大量数据涌进数据库的时候,数据库的访问技术就成了瓶颈,同时也激励了数据库
访问技术的不断发展。
VC++是众多编程语言中最突出的一种,无论底层的还是高层的操作接口,它都能够使
用,而不受到开发需求的限制,因此说 VC++对数据库访问技术的支持是最彻底的。从 ODBC
API 到 MFC 的 ODBC 类,从 DAO 到 OLE DB,VC++可以采用的数据库访问技术十分广
泛。
本书对这些技术不做绝对的评价,因为每一种数据库访问技术都有其存在的价值,都
有其它技术不能比拟的优势。评价一个技术的唯一标准是,它是不是适用于具体的应用需
求。本书以实用为目的,结合具体的数据库应用,选择了 7 个最有代表性的实例,分别介
绍 ODBC API、MFC 的 ODBC 类、DAO、OLE DB 以及 ADO 的客户数据库访问技术和应
用开发过程。本书还通过 ADO 数据库组件开发实例和 OLE DB 服务器程序的开发实例展
开了数据库应用开发的高级话题。
本书是作者多年从事数据库开发实践的一些经验总结,是程序员对数据库访问技术灵
活把握的很有价值的参考资料。本书所附的光盘里含有全部实例的源代码,在这里作者愿
意毫无保留地将它们赠送给读者。
作 者
目 录
第 1 篇 基础篇
第 1 章 数据库原理与访问 ............ 2
1.1 数据库基本原理........................................... 2
1.1.1 概述....................................................... 2
1.1.2 桌面数据库........................................... 3
1.1.3 对象数据库........................................... 3
1.1.4 关系数据库服务器 ............................... 5
1.1.5 选择适用的数据库 ............................... 5
1.2 数据库访问技术........................................... 6
1.2.1 概述....................................................... 6
1.2.2 ODBC API............................................. 7
1.2.3 ODBC 的 MFC 类 ................................ 7
1.2.4 DAO 与 RDO........................................ 8
1.2.5 OLE DB 与 ADO.................................. 9
1.3 数据库操纵语言 SQL................................ 10
1.3.1 SQL 命令 ............................................ 10
1.3.2 SQL 从句 .............................................11
1.3.3 SQL 运算符 .........................................11
1.3.4 SQL 合计函数 .....................................11
1.4 小结 ............................................................ 12
第 2 章 COM 与数据库访问 ........... 13
2.1 COM 的基本原理 ...................................... 13
2.1.1 COM 历史........................................... 13
2.1.2 COM 结构........................................... 14
2.1.3 COM 优势........................................... 15
2.1.4 COM 接口........................................... 16
2.1.5 COM 与数据库访问........................... 17
2.1.6 COM 与 Internet ................................. 17
2.2 ActiveX 的数据库访问 .............................. 18
2.2.1 ActiveX 简介 ...................................... 18
2.2.2 ActiveX 对数据库访问的支持........... 18
2.3 ATL 的数据库访问 .................................... 19
2.3.1 ATL 目标 ............................................ 19
2.3.2 ATL 内容简介..................................... 21
2.3.3 ATL 对数据库访问的支持................. 22
2.4 小结 .............................................................22
第 3 章 数据库开发过程............. 23
3.1 阶段 1:调查与分析 ..................................23
3.2 阶段 2:数据建模 ......................................24
3.3 阶段 3:功能设计 ......................................24
3.4 阶段 4:选择数据库系统 ..........................25
3.5 阶段 5:选择数据库访问技术...................25
3.6 阶段 6:代码设计 ......................................26
3.7 阶段 7:测试与调试 ..................................26
3.8 阶段 8:发行产品 ......................................26
第 4 章 VC++数据库开发基础......... 27
4.1 VC++ 6.0 工程创建向导 ............................27
4.2 VC++ 6.0 数据库新建工具 ........................27
4.3 VC++ 6.0 的数据库工程 ............................30
4.4 小结 .............................................................33
第 2 篇 实例篇
第 5 章 ODBC API 编程 .............. 35
5.1 了解 ODBC API..........................................35
5.2 ODBC API 编程步骤 ..................................36
5.2.1 步骤 1:连接数据源...........................36
5.2.2 步骤 2:分配语句句柄.......................38
5.2.3 步骤 3:准备并执行 SQL 语句 .........38
5.2.4 步骤 4:获取结果集...........................39
5.2.5 步骤 5:提交事务...............................41
5.2.6 步骤 6:断开数据源连接并释放
环境句柄 .............................................41
5.3 ODBC API 编程实例 ..................................41
5.3.1 实例概述..............................................41
5.3.2 实例实现过程......................................42
5.3.3 编译并运行 ODBCDemo1 工程 .......109
5.3.4 ODBCDemo1 实例小结 ....................111
5.4 本章小结 ................................................... 111
第 6 章 MFC ODBC 编程 ............. 112
6.1 了解 MFC ODBC......................................112
6.1.1 CDatabase 类 .....................................112
6.1.2 CRecordSet 类....................................112
6.2 MFC ODBC 数据库访问技术 ..................113
6.2.1 记录查询............................................113
6.2.2 记录添加............................................114
6.2.3 记录删除............................................115
6.2.4 记录修改............................................115
6.2.5 撤销数据库更新操作 ........................115
6.2.6 直接执行 SQL 语句 ..........................115
6.2.7 MFC ODBC 的数据库操作过程.......116
6.3 MFC ODBC 编程实例 ..............................116
6.3.1 实例概述............................................116
6.3.2 实例实现过程....................................117
6.3.3 编译并运行 ODBCDemo2 工程 ...... 149
6.3.4 ODBCDemo2 实例小结 ................... 154
6.4 本章小结 .................................................. 155
第 7 章 DAO 数据库编程 ............ 155
7.1 DAO 的数据访问..................................... 155
7.1.1 DAO 对象 ......................................... 155
7.1.2 MFC 对 DAO 的支持 ....................... 156
7.1.3 DAO 与 ODBC 的比较 .................... 156
7.1.4 MFC 的 DAO 类简介 ....................... 157
7.2 DAO 编程实例......................................... 160
7.2.1 实例概述........................................... 160
7.2.2 实例实现过程................................... 161
7.2.3 运行 DAODemo 工程......................... 188
7.2.4 DAODemo 实例小结........................ 193
7.3 小结 .......................................................... 193
第 8 章 OLE DB 客户数据库编程 ..... 194
8.1 OLE DB 原理 ........................................... 194
8.1.1 OLE DB 与 ODBC............................ 194
8.1.2 OLE DB 的结构................................ 194
8.1.3 OLE DB 的优越性............................ 195
8.1.4 OLE DB 对象.................................... 195
8.1.5 OLE DB 客户模板结构.................... 199
8.1.6 OLE DB 客户模板类........................ 199
8.2 OLE DB 客户数据库访问的两种途径.... 202
8.2.1 以 MFC AppWizard(exe)为向导
建立 OLE DB 客户程序框架........... 202
8.2.2 以 ATL COM AppWizard 为向导
建立 OLE DB 客户程序框架........... 212
8.3 OLE DB 客户应用程序编程实例 ............217
8.3.1 实例概述............................................217
8.3.2 实例实现过程....................................218
8.3.3 编译并运行工程................................256
8.3.4 OLEDB_MFC 实例小结 ...................261
8.4 小结 ...........................................................261
第 3 篇 高级话题
第 9 章 ADO 客户数据库编程 ........ 262
9.1 ADO 原理 .................................................262
9.1.1 ADO 与 OLE DB...............................262
9.1.2 ADO 的优越性 ..................................263
9.1.3 ADO 对象模型 ..................................263
9.1.4 ADO 编程..........................................266
9.2 ADO 的数据库访问规范..........................266
9.3 ADO 数据库编程实例..............................267
9.3.1 实例概述............................................267
9.3.2 实例实现过程....................................268
9.3.3 运行 ADODemo 工程 .......................299
9.3.4 ADODemo 实例小结 ........................302
9.4 小结 ...........................................................303
第 10 章 开发 ADO 数据库组件....... 304
10.1 ADO 组件概述........................................304
10.1.1 COM 组件原理................................304
10.1.2 ADO 组件模型 ................................304
10.1.3 ADO 组件同客户程序的协作 ........306
10.2 ADO 数据库组件开发实例....................307
10.2.1 实例概述..........................................307
10.2.2 实例实现过程..................................307
10.2.3 编译工程..........................................327
10.3 编写组件的客户程序 .............................328
10.3.1 创建客户程序..................................329
10.3.2 设计客户程序的界面......................330
10.3.3 编写测试代码..................................330
10.3.4 ADOAccessor 实例小结..................332
10.4 小结 .........................................................332
附录 A 数据库访问的错误代码 ...... 333
附录 B 数据库编程资源网站 ........ 339
附录 C 光盘内容 .................. 340
第1篇 基础篇
数据库技术作为计算机应用领域的重要组成部分,已经渗透到社会生活的方方面面。
小到基本的公司日常管理,大到互联网的电子商务,都刻着数据库的印记。电子时代的到
来,使数据库技术逐渐走进每个人的生活。数据库技术,小到基本的桌面应用,大到企业
级的大型事务处理,它已经无所不在,无所不及。数据库技术为软件行业带来了巨大的生
机和活力,数据库编程已经成为世界软件生产的重要内容。
为了使您快速了解数据库技术,掌握 VC++数据库编程的基本知识,本篇介绍如下内
容:
¾ 第 1 章 数据库原理与访问
¾ 第 2 章 COM 与数据库访问
¾ 第 3 章 数据库开发过程
¾ 第 4 章 VC++数据库开发基础
第 1 章 数据库原理与访问
1.1 数据库基本原理
1.1.1 概述
数据库技术的发展历程
数据库是现代计算机应用的一个重要组成部分,是人们有效地进行数据存储、共享和
处理的工具。
数据库技术的发展经过了 40 多年的历程。1963 年,C.W.Bachman 设计开发的 IDS
(Integrated Data Store)系统开始投入运行,使多个 COBOL 程序可以共享数据库。1968
年,网状数据库系统 TOTAL 出现。1969 年,McGee 开发层次式数据库系统,发布了 IBM
的 IMS 系统。1970 年,IBM 公司 San Jose 研究所的 E.F.Code 发表了题为“大型共享数据
库数据的关系模型”的著名论文,树立了关系型数据库的新的里程碑,E.F.Code 因此获得
1981 年度的 ACM 图灵奖,IBM San Jose 研究所也在 1976 年研制出在 IBM 370 机器上运
行的 SYSTEM R 关系型数据库管理系统。1979 年,ORACLE 公司推出了第一个商品化的
关系型数据库系统 ORACLE 2.0。80 年代至今,是数据库技术发展的成熟时期,这个时期
出现了众多的大型数据库系统,包括 IBM 的 DB2、微软的 SQL Server、Sybase 以及 Informix
相继出现,使数据库系统呈现出夺目的光彩。
数据库系统的优势
数据库同文件相比,有以下优势:
首先,数据库中的数据是高度结构化的,不仅考虑数据项之间的关系,还考虑了记录
类型之间的关系,从而反映出现实中的信息实体。
其次,数据库中的数据是面向系统而不是面向应用的,因此数据库的数据比文件系统
的共享程度高,面向系统的另一个好处是信息结构稳定,易于扩展。
第三,数据库系统比文件系统有更高的独立性。为了实现这种独立性,数据库系统往
往拥有比特定应用更多的数据,对于特定的应用只提供局部的逻辑结构,保持应用的逻辑
独立性。
第四,数据库系统具有较好的数据安全性和一致性维护措施。数据库系统都具有特定
的授权机制,防止非法用户的使用。在多用户操作的情况下,数据库可以进行良好的数据
并发处理,维护数据的一致性。
最后,数据库对数据的存取不是以记录为单位的,可以仅操作记录的某些字段,方便
了外部应用对数据的操纵。