致谢
第一部分 了解数据访问接口
第一章 未来之路
1.1 Internet热潮
1.2 不断发展的标准
1.3 我们的位置
1.3.1 SQL Server 7.0
1.3.2 Visual Basic 6.0
1.3.3 ActiveX数据对象
1.3.4 COM的成熟
1.3.5 Microsoft Transaction Server
1.3.6 Viusal Basic企业版
1.3.7 Microsoft开发工具
1.4 我们的目标
第二章 数据接口
2.1 从 Visual Basic访问SQL Server
2.1.1 VBSOL
2.1.2 ODBC API
2.1.3 DAO/Jet
2.1.4 DAO/ODBCDirect
2.1.5 RDO
2.1.6 ADO
2.1.7 数据接口总结
2.2 了解底层接口
2.2.1 DB-Library
2.2.2 ODBC
2.2.3 OLE DB
2.3 下一步
第三章 数据访问:快速入门
3.1 准备创建示例
3.1.1 创建数据源名称
3.1.2 使用 Visual Basic 6.0
3.1.3 示例中使用的库和控件
3.1.4 Visual Basic窗体
3.2 DAO/Jet实地测试
3.2.1 DAO/Jet和Data控件示例
3.2.2 DAO/Jet示例
3.3 DAO/ODBCirect实地测试
3.3.1 DAO/ODBCDirect和Data控件示例
3.3.2 DAO/ODBCDirect示例
3.4 RDO实地测试
3.4.1 RDO和RemoteData控件示例
3.4.2 RDO示例
3.5 ADO实地测试
3.5.1 ADO和ADO Data控件示例
3.5.2 ADO示例
3.6 比较示例
3.6.1 仔细研究结果
第四章 选择结构
4.1 提出正确的问题
4.1.1 结构
4.1.2 开发技巧
4.1.3 时间结构
4.1.4 性能
4.1.5 性能发展史
4.1.6 现有技术
4.1.7 新技术
4.1.8 成本
4.1.9 规模
4.1.10 设计与现实
4.1.11 配置和培训
4.1.12 展望未来
4.2 处理响应
4.3 了解不同的结构
4.3.1 客户/服务器结构
4.3.2 分布式引擎结构
4.3.3 分布式组件结构
4.3.4 基于Web的结构
4.4 评价客户/服务器分布式引擎结构
4.4.1 一种假定的客户/服务器配置
4.4.2 一个假想的分布式引擎配置
4.4.3 在客户/服务器和分布式引擎结构中选择
4.4.4 访问带有分布式数据库引擎的中央数据库引擎
第二部分 设计SQL Server
第五章 规划您的设计
5.1 状态机
5.2 全面理解临时表和缓冲区
5.2.1 理解临时表
5.2.2 无临时表的结果集
5.2.3 滚动临时表
5.2.4 临时表的类型
5.2.5 缓冲区的类型
5.2.6 实现临时表
5.3 基本设计决定
5.4 避免设计时的10大误区
5.5 创建有效的应用程序
5.5.1 本地和数据库驱动的验证
5.5.2 数据驱动验证
5.5.3 制作有效的规则
5.5.4 使默认值有效和解析默认字符串
5.5.5 管理有效的应用程序
第六章 建立与SQL Server的连接
6.1 连接地中的狗爬式
6.2 连接的安全
6.2.1 获得登录标识号和密码
6.2.2 获得有效的服务器名称或数据源名称
6.2.3 避免使用登录对话框
6.3 连接管理
6.3.1 允许更多的活动连接
6.3.2 新连接在服务器上的冲突
6.3.3 设置超时值
6.4 管理连接状态
6.5 处理连接错误
6.5.1 与应用程序有关的问题
6.5.2 支持库所产生的问题
6.5.3 与LAN有关的连接问题
6.5.4 与SQL Server有关的连接问题
6.5.5 与连接和许可有关的错误
6.5.6 与登录有关的问题
第七章 设计和建立查询
7.1 查询的类型
7.2 为性能设计查询
7.3 建立查询
7.3.1 Microsoft Query
7.3.2 Viusal Database Tools
7.3.3 手工操作
7.4 了解查询
7.4.1 引号管理
7.4.2 参数查询
7.4.3 重叠的查询
7.4.4 特别查询
7.4.5 English Query
7.4.6 多结果集查询
7.4.7 异步查询
7.4.8 统计行数
7.4.9 设置查询超时
7.5 与查询相关的错误消息
7.6 使用 Visusal Basic进行调试
7.7 定位SQL Server元素
第八章 检索数据和使用结果集
8.1 查询过程
8.2 使用单行结果集
8.3 使用临时表
8.3.1 限制临时表中的行数
8.3.2 使用WHERE子句限制行数
8.4 更新和插入数据
8.5 使用批处理
8.5.1 使用开放式批处理更新
8.5.2 建立批处理
8.5.3 批处理限制
8.5.4 发送多个批处理
8.5.4 使用批处理结果
第三部分 使用带有Jet 数据库引擎的DAO
第九章 Jet数据库引擎和DAO模式
9.1 DAO/Jet与SQL Serve的历史
9.2 Jet访问远程数据库的方式
9.2.1 Jet与SQL Server:编写查询代码并创建临时表
9.2.2 Jet查询处理器
9.3 理解DAO模型
9.3.1 属性和方法
9.3.2 集合
9.3.3 传递对象模型
第十章 数据访问对象
10.1 组件体系结构
10.2 DBEngine对象
10.3 Workspace对象
10.3.1 使用 IsolateODRCTrans属性
10.3.2 Workspace方法
10.4 Database对象
10.4.1 附加表与直接链接
10.4.2 Database属性
10.4.3 方法
10.5 TableDef对象
10.5.1 TableDef属性
10.5.2 TableDef数据类型
10.6 Field对象
10.7 Index对象
10.8 表和索引
10.9 创建或添加表和索引
第十一章 配置和调整Jet引擎
11.1 Windows注册表数据库
11.1.1 注册表范围
11.1.2 创建并使用新的注册表键值
11.2 了解Jet引擎选项
11.2.1 Microsoft ODBC驱动程序初始化设置
11.2.2 细节
11.2.3 调整MSvsConf
第十二章 使用DAO/Jat进行连接
12.1 Jet的连接管理方案
12.1.1 活动语句
12.1.2 临时表提交/回滚行为
12.2 连接区享
12.3 连接缝存和失效
12.4 自己管理连接
12.5 打开附加表
12.6 使用DAOJet方法创建附加表
12.7 连接:常见的困难
第十三章 使用DAO/Jet访问数据
13.1 理解DAO/Jet临时表
13.2 创建 DAO/Jet临时表
13.2.1 编写OpenRecordset方法的代码
13.2.2 结果集传递
13.3 选择索引
13.4 使用ODBC缓存
13.5 GetRows和Variant数组
13.6 重定位当前行的指针
13.6.1 当前行指针的有效性
13.6.2 定位特定行
13.7 更新DAO/Jet数据源
13.7.1 使用 DAO/Jet临时表
13.7.2 使用基于SQL的操作查询更新
13.8 处理DAO/Jet错误
第十四章 执行Transact-SQL查询
14.1 使用SQL传递查询
14.1.1 典型的应用程序
14.1.2 实现SQL传递查询
14.1.3 创建SQL传递QuerDef对象
14.1.4 使用具有附加表的SQL传递查询
14.1.5 查询技术总结
14.2 使用存储过程
14.2.1 返回参数
14.2.2 输出参数
14.3 处理SQL Server消息
第十五章 使用Data控件
15.1 应用 Data控件
15.2 使用 Data控件处理 SQL Server
15.3 设置属性
15.4 检查属性
15.5 使用绑定型控件
第十六章 理解Jet查询处理器
16.1 Jet必须本地处理的结构
16.1.1 支持的 Visusal Basic操作符和函数
16.1.2 用户定义的函数
16.1.3 其他不支持的功能
16.1.4 其他不支持的及有问题的表达式
16.2 条件的分割
16.3 输出的求值
16.4 交叉表查询执行的删除
16.5 外部连接
16.6 生成发送到服务器的SQL
16.7 LIKE操作符的通配符
16.8 拥有者和表前缀
16.9 标识符引用
第十七章 使用ODBCDirect
17.1 了解 ODBCDirect接口
17.2 激活ODBCDirect
17.3 连接到数据库
17.4 比较Database对象和Connection对象
17.4.1 rdoConnection对象与 ODBCDirect Connection对象的比较
17.5 执行SQL查询
17.5.1 rdoResultset对象与Recordset对象的比较
17.5.2 了解QueryDef对象
17.5.3 rdoQuety对象与 QueryDef对象的比较
17.6 处理 Recordset对象
17.6.1 控制多个Recordset对象
17.7 运行异步操作
17.8 开放式批处理更新
17.9 查看错误
17.10 ODBCDirect示例
17.10.1 示例1:决定您的数据库在哪个Workspace中打开
17.10.2 示例2:从服务器获取多个Recordset对象
17.10.3 示例3:取消块操作
17.10.4 示例4:使用 dbRunAsync打开 Recordset
17.10.5 示例5:使用QueryDef对象
17.11 将应用程序转换到ODBCDirect的提示
17.12 使用Data控件
第十八章 Jet:旅行者的日记
18.1 分配数据库文件空间
18.2 事务损失和破坏修复
18.3 备份Access数据库
18.4 更新记录
18.5 提示
第四部分 使用远程数据对象
第十九章 了解运程数据对象
19.1 了解RDO
19.2 设计特性
19.3 比较RDO和DAO
19.4 RDO的缺点
19.5 获得有关RDO的最新信息
19.6 许可RDO
第二十章 远程数据对象的细节
20.1 了解RDO模型
20.2 rdoEngine对象
20.2.1 rdoEngine的属性、事件和方法
20.3 rdoEngine对象
20.3.1 rdoEnvironment的属性、事件和方法
20.3.2 事务管理
20.3.3 可选的事务管理器
20.3.4 选择临时表驱动程序
20.3.5 了解服务器端临时表
20.4 rdoEngine对象
20.4.1 指定默认数据库
20.4.2 使用rdoEngine对象
第二十一章 与RDO连接
21.1 定位和命名SQL Server
21.2 建立连接
21.2.1 文件数据源
21.2.2 SAVEFILE关键字
21.2.3 异步打开连接
21.2.4 处理单独的rdoEngine对象
21.2.5 管理 RDO 2.0集合
21.2.6 其他连接参数
21.2.7 连接问题
第二十二章 使用RDO UserConnection设计器
22.1 了解自定义的UserConnection对象
22.2 创建自定义的UserConnection对象
22.3 按方法执行查询和存储过程
22.3.1 引用新的rdoResultset
22.3.2 建立自己的查询
22.3.3 对使用自己的SQL及参数的提示
22.4 在运行时设置UserConnection属性
22.5 使用 UserConnection对象的事件
第二十三章 使用RDO创建结果集
23.1 是否选择临时表
23.1.1 rdOpenForwardOlny类型的Resultsdt对象
23.1.2 rdOpenStatic类型的rdoResultset对象
23.1.3 rdOpenDeyset类型的rdoResultset对象
23.1.4 RdOpenDynamic 类型的rdoResultet对象
23.1.5 建立无临时表结果集
23.1.6 在客户端和服务器端临时表之间选择
23.1.7 调整临时表Rowset的大小
23.2 支持rdoResultset临时表
23.3 页锁定
23.3.1 断开rdoResultset对象
23.4 指定结果集的源
23.5 管理异步操作
23.5.1 RDO 2.0的异步增强
23.5.2 RDO 2.0事件
23.6 调整rdoResultset操作的性能
23.6.1 管理临时存储过程
23.6.2 使用OpenResultset选项
23.7 rdoResultset对象
23.7.1 RDO 2.0集合管理
23.7.2 研究rdResultset的方法和属性
23.7.3 管理rdoResultaset事件
23.7.4 处理与查询相关的rdoConnection事件
23.7.5 管理rdoResultsets
23.7.6 使用GetROWS
23.8 rdoColumn对象
23.8.1 rdoColumn属性
23.8.2 寻址列数据
23.8.3 映射数据库方案
第二十四章 开放式批处理更新
24.1 开放式批处理更新概述
24.2 使用RDO执行开放式批处理更新
24.2.1 建立连接
24.2.2 创建rdoQuery对象
24.2.3 选择正确的CursorType选项
24.2.4 选择正确的并选项
24.2.5 执行Row-Retrieval查询
24.2.6 检索行
24.2.7 从连接断开
24.2.8 进行更改
24.2.9 与连接重新接通
24.2.10 进行更新
24.2.11 检查错误和解决冲突
第二十五章 进一步使用RDO
25.1 rdoQuery对象
25.1.1 创建rdoQuery对象
25.1.2 研究rdoQuery属性
25.2 使用参数查询
25.2.1 创建参数查询
25.2.2 使用ODBC查询语法
25.3 执行存储过程
25.4 管理多结果集
25.5 使用基于页的数据类型
25.5.1 使用Chunk方法获取基于页的数据
25.5.2 访问BLOB的提示和技术
25.5.3 随机的BIDB提示
25.5.4 一个BLOB示例
25.6 面对rdoTable对象
第二十章 使用RDO接口维护数据
26.1 修改数据的选项
26.1.1 读写临时表
26.1.2 Execte方法
26.2 添加数据
26.3 更新数据
26.3.1 定位当前行指针传送更新
26.3.2 使用只读临时表更新
26.3.3 使用Execute方法更新
26.4 删除数据
26.5 出现错误时
第二十七章 使用RemoteData控件
27.1 RemoteData控件的不同点
27.2 RemoteData控件的属性
27.2.1 rdoEnvironment属性
27.2.2 rdoConnection属性
27.2.3 rdoResultset属性
27.3 RemoteData控件的方法和事件
27.4 建立绑定控件
第五部分 使用ADO 和OLE DB
第二十八章 了解ADO和OLE DB
28.1 初识 OLE DB
28.1.1 万能物解决方法
28.1.2 远望 OLE DB
28.1.3 使用 OLE DB的结构
28.2 初识ADO
28.2.1 ADO 2.0简介
28.2.2 ADO对象模型
28.2.3 ADO对象
28.2.4 从RDO观察ADO对象模型
第二十九章 研究ActiveX Data Objects
29.1 了解ADO对象模式
29.1.1 ADO集合
29.2 ADO Connechtion对象
29.2.1 管理连接状态
29.2.2 Connection对象集合
29.2.3 Connection对象方法
29.2.4 Connection对象属性
29.2.5 Connection对象事件
29.2.6 Connection事务管理
29.3 ADO Command对象
29.3.1 Command对象集合
29.3.2 Command对象方法
29.3.3 Command对象属性
29.4 ADO Recordset对象
29.4.1 Recordset对象集合
29.4.2 Recordset对象方法
29.4.3 Recordset对象属性
29.5 ADO Field对象
29.5.1 Field对象属性
29.6 ADO Parameter对象
29.6.1 Parameter对象方法
29.6.2 Parameter对象属性
29.7 ADO Property对象
29.7.1 Property对象属性
29.8 ADO Error对象
29.8.1 Error对象属性
第三十章 连接 ADO
30.1 建立客户/服务器连接
30.1.1 ADO连接选项
30.1.2 建立Connectionstring
30.1.3 建立 OLE DB Data Link
30.1.4 如何标记 Data Link Propertion对话框
30.1.5 修补 Data View/Environment连接
30.2 使用基于代码的方法连接
30.2.1 使用 ADO Connection的 Open方法连接
30.2.2 使用 ADO的 Recordset Open方法连接
30.2.3 处理默认值
30.2.4 更高级的连接
30.2.5 ADO连接提示
30.3 从组件连接
第三十一章 建立ADO Recordset
31.1 建立 ADO Recordest对象
31.1.1 单机 ADO Recordset对象
力.1.2 基于文件的ADO Recordset对象
31.1.3 远程数据库中的ADO Recordset对象
31.2 ADO查询
31.2.1 告诉ADO如何(以最佳方式)运行查询
31.2.2 运行参数查询要小心
31.2.3 使用Prepared语句
31.3 ADO 临时表
31.3.1 ADO临时表是什么,它们为什么是邪恶的?
31.3.2 怎样才算是好的ADO临时表?
31.3.3 ADO临时表是怎样工作的?
31.3.4 不同类型的 ADO临时表
31.3.5 何时使用临时表?
31.3.6 ADO CursorLocation选择
31.3.7 客户端 ADO临时表
31.3.8 服务器端ADO临时表
31.3.9 可更新的ADO临时表
31.4 使用 ADO管理同步
31.5 获取 ADO Recordset数据
31.5.1 引用一行和一列
31.5.2 绑定数据源控件
31.5.3 使用 GetRows方法
31.5.4 使用Getstring方法
31.6 筛选、查找和排序 ADO Recordset数据
31.6.1 筛选 ADO Recordset
31.6.2 在 ADO Recordset数据中查找资料
31.6.3 排序 ADO Recordset数据
第三十二章 使用ADO事件和异步操作
32.1 ADO事件类型
32.1.1 Will事件
32.1.2 During事件
32.1.3 Complete事件
32.2 启用事件处理程序
32.3 检查事件处理程序参数
32.3.1 状态参数
32.3.2 Error参数
32.3.3 Object参数
32.3.4 Reason参数
32.4 两个事件示例
32.4.1 连接示例
32.4.2 查询示例
32.5 使用Will和Complete事件处理程序
32.5.1 不成对的事件处理程序
32.5.2 多事件处理程序和单独操作
32.6 管理异步操作
32.6.1 使用异步选项
32.6.2 异步操作的一些细微差别
第三十三章 让ADO飞起来
33.1 建立自定义的 ADO Command对象
33.1.1 作为Connection方法的Command
33.2 管理复杂的(存储)过程
33.2.1 管理多结果集
33.2.2 管理输出和返回值参数
33.2.3 使用 Data Environment管理存储过程
33.2.4 使用Data Object Wizard处理存储过程
33.3 执行开放式客户批处理操作
33.3.1 冲突管理
33.3.2 导致冲突
33.3.3 识别冲突
33.3.4 Resync方法
33.3.5 事务和冲突
33.4 使用基于页的数据
33.5 处理特殊情况
33.5.1 处理PRINT和RALSEROR
33.5.2 处理 COMPUTE子句
33.5.3 处理NULL
33.5.4 使用Showplan调试
33.5.5 使用 Data Environment 建立Recordset 和DataReport
第三十四章 从RDO移植到ADO
34.1 从RDO角度考虑的ADO
34.2 是否移植到 ADO
34.3 通过RDO解决基本的数据访问问题
34.3.1 RDO:全局变量编码
34.3.2 RDO:建立连接
34.3.3 RDO:连接操作完成以后
34.3.4 RDO:运行基本的查询
34.3.5 RDO:使用 WillExecute事件
34.3.6 RDO:管理结果集
M.3.7 RDO:在 MSFlexGrid中显示结果集
34.4 通过RDO访问更复杂的数据
34.4.1 RDO:执行更复杂的过程
34.4.2 RDO:执行返回OUTPUT值的存储过程
34.4.3 RDO:执行多结果集的存储过程
34.4.4 RDO:执行操作查询
34.4.5 RDO:执行开放式的批处理查询
34.5 通过ADO解决基本的数据访问问题
34.5.1 ADO:编写全局变量
34.5.2 ADO:建立连接
34.5.3 ADO:当连接操作完成时
34.5.4 ADO:运行基本查询
34.5.5 ADO:使用WillExecute事件
34.5.6 ADO:管理结果集
34.5.7 ADO:在 MSFlexGrid中显示结果集
34.6 使用ADO访问更复杂的数据
34.6.1 ADO:执行参数查询
34.6.2 ADO:执行参数驱动的存储过程
34.6.3 ADO:执行返回OUTPUT值的存储过程
34.6.4 ADO:执行多重结果集存储过程
34.6.5 ADO:执行操作查询
34.6.6 ADO:执行开放式批处理查询
34.7 移植提示和技巧
第六部分 使用新工具
第三十五章 使用Transact-SQL Debugger
35.1 安装SQL Server 和 Visual Basic
35.1.1 客户端安装
35.1.2 服务器端安装
35.2 交互地访问TSQL Debugger
35.3 从代码中访问TSQL Debugrr
35.4 调试 TSQL Debuper
第三十六章 使用 Data View窗口和Query Builder
36.1 Data View窗口
36.1.1 添加 Data Link
36.1.2 添加 DataEnvironment Connection
36.1.3 浏览SQL Server数据库
36.2 使用 Visual Database Tools管理SQL Server数据库
36.2.1 创建表格
36.2.2 修改表格
36.2.3 建立索引
36.2.4 创建关系
36.2.5 创建数据库方案
36.2.6 创建视图
36.3 使用 Query Builder创建查询
36.3.1 测试您的查询
36.3.2 创建参数查询
36.3.3 创建存储过程
36.4 使用 QUery Builder处理SQL Server
36.4.1 SQL Server版本
36.4.2 SQL语法
36.4.3 标识数据库对象
36.4.4 使用引号标识
36.4.5 区分大小写
36.4.6 创建别名
36.4.7 在表达式中使用操作符
36.4.8 在Grid和SQL窗格中输入关键字
36.4.9 输入货币值
36.4.10 使用 DISTINCT
36.4.11 建立外部连接
36.4.12 输入空格
36.4.13 包括优化提示说明
36.4.14 ANSI到 IEM的字符转换
36.4.15 不支持和部分支持查询类型
第三十七章 仔细考察Data Environment设计器
37.1 启动 Data Environment设计器
37.1.1 将控件映射到字段
37.1.2 使用 Data View窗口添加 Data Environment对象
37.2 从Data Environment处理存储过程
37.2.1 访问带有参数的存储过程
37.3 使用分级的Hierachical结果集和其他子集
37.3.1建立到Hierarchy的绑定接口
37.3.2 清理网格
第三十八章 尝试Data Object Wizard
38.1 Data Object Wizard门
38.2 DOW设计问题
38.3 设置 DOW命令
38.4 一个简单的DOW示例
38.4.1 使用DOW创建Data类
38.4.2 使用DOW创建数据绑定的UserControl
38.4.3 完成简单的示例
38.5 DOW提示
38.6 在应用程序中使用DOW对象
38.6.1 其他控件的变化
38.6.2 数据Class事件
38.6.3 数据绑定
38.6.4 Recordsets
38.6.5 Init方法
38.6.6 系统生成的主键值
38.6.7 UserControl的初始化
38.7 DOW生成的数据Class代码
38.7.1 clsDow
38.7.2 rscls
38.8 DOW生成的UserControl代码
38.8.1 SingleRecord UserControl类型
38.8.2 DataGrid UserControl类型
38.8.3 Listbox ComboBox UserControl类型
附录 A 设置测试数据库
A.1 安装 Biblio数据库
A.1.1 在SQL Server 6.5 上安装 BibliO
A.1.2 在SQL Server 7.0上安装 Biblio
A.2 创建 DSN
A.3 添加存储过程
A.4 Attach.MDB数据库
A.5 设置示例应用程序
附录 B SQL Server错误代码解释
附录 C SQL Server提示与技巧
C.1 大量复制程序的技巧
C.2 存储过程的技巧
C.3 Transact-SQL 的常规技巧
C.4 增强性能的技巧
C.5 提高设计效率的技巧
C.6 从SQL Server访问 Visual Basic组件
C.6.1 理解结构
C.6.2 调查典型的方案
C.6.3 尝试使用扩展存储过程
C.6.4 从存储过程访问COM对象
C.6.5 SQL Server OLE存储过程
C.6.6 建立 Visual Basic组件
C.6.7 检查服务器端 OLE Automaon存储过程批处理
C.6.8 数据类型转换
C.6.9 检查 OLE Automation存储过程错误处理程序