致谢 1
第一部分 了解数据访问接口 3
第一章 未来之路 3
1.1 Internet热潮 3
1.2不断发展的标准 4
1.3我们的位置 5
1.3.1 SQL Server7.0 6
1.3.2 Visual Basic6.0 6
1.3.4 COM的成熟 7
1.3.3 ActiveX数据对象 7
1.3.5 Microsoft Transaction Server 8
1.3.6 Viusal Basic企业版 8
1.3.7 Microsoft开发工具 9
1.4我们的目标 9
第二章 数据接口 11
2.1从Visual Basic访问SQL Server 11
2.1.1 VBSQL 11
2.1.3 DAO/Jet 14
2.1.2 ODBC API 14
2.1.4 DAO/ODBCDirect 17
2.1.5 RDO 18
2.1.6 ADO 19
2.1.7数据接口总结 19
2.2了解底层接口 20
2.2.1 DB-Library 20
2.2.2 ODBC 21
2.2.3 OLE DB 23
2.3下一步 24
第三章 数据访问:快速入门 25
3.1准备创建示例 25
3.1.1创建数据源名称 26
3.1.2使用Viusal Basic6.0 29
3.1.3示例中使用的库和控件 31
3.1.4 Visual Basic窗体 31
3.2 DAO/Jet实地测试 33
3.2.1 DAO/Jet和Data控件示例 34
3.2.2 DAO/Jet示例 39
3.3 DAO/ODBCDirect实地测试 44
3.3.1 DAO/ODBCDirect和Data控件示例 45
3.3.2 DAO/ODBCDirect示例 47
3.4 RDO实地测试 49
3.4.1 RDO和RemoteData控件示例 50
3.4.2 RDO示例 51
3.5 ADO实地测试 55
3.5.1 ADO和ADO Data控件示例 56
3.5.2 ADO示例 58
3.6比较示例 61
3.6.1仔细研究结果 62
第四章 选择结构 65
4.1提出正确的问题 66
4.1.1结构 66
4.1.3时间结构 67
4.1.4性能 67
4.1.2开发技巧 67
4.1.5性能发展史 68
4.1.6现有技术 68
4.1.7新技术 68
4.1.8成本 68
4.1.11配置和培训 69
4.1.12展望未来 69
4.1.10设计与现实 69
4.1.9规模 69
4.2处理响应 70
4.3了解不同的结构 73
4.3.1客户/服务器结构 74
4.3.2分布式引擎结构 79
4.3.3分布式组件结构 80
4.3.4基于Web的结构 84
4.4评价客户/服务器分布式引擎结构 87
4.4.1一种假定的客户/服务器配置 87
4.4.2一个假想的分布式引擎配置 95
4.4.3在客户/服务器和分布式引擎结构中选择 100
4.4.4访问带有分布式数据库引擎的中央数据库引擎 103
第二部分 设计SQL Server应用程序 107
第五章 规划您的设计 107
5.1状态机 107
5.2全面理解临时表和缓冲区 108
5.2.1理解临时表 109
5.2.2无临时表的结果集 112
5.2.3滚动临时表 112
5.2.4临时表的类型 112
5.2.5缓冲区的类型 114
5.2.6实现临时表 115
5.3基本设计决定 116
5.4避免设计时的10大误区 118
5.5创建有效的应用程序 120
5.5.1本地和数据库驱动的验证 122
5.5.2数据驱动验证 123
5.5.3制作有效的规则 124
5.5.4使默认值有效和解析默认字符串 126
5.5.5管理有效的应用程序 128
第六章 建立与SQL Server的连接 129
6.1连接池中的狗爬式 130
6.2连接的安全 131
6.2.1获得登录标识号和密码 132
6.2.2获得有效的服务器名称或数据源名称 132
6.2.3避免使用登录对话框 134
6.3.1允许更多的活动连接 136
6.3连接管理 136
6.3.2新连接在服务器上的冲突 137
6.3.3设置超时值 138
6.4管理连接状态 139
6.5处理连接错误 140
6.5.1与应用程序有关的问题 141
6.5.2支持库所产生的问题 141
6.5.3与LAN有关的连接问题 142
6.5.5与连接和许可有关的错误 144
6.5.4与SQL Server有关的连接问题 144
6.5.6与登录有关的问题 145
第七章 设计和建立查询 147
7.1查询的类型 147
7.2为性能设计查询 148
7.3建立查询 150
7.3.1 Microsoft Query 151
7.3.2 Viusal Database Tools 151
7.3.3手工操作 152
7.4了解查询 153
7.4.1引号管理 153
7.4.2参数查询 155
7.4.3重叠的查询 156
7.4.4特别查询 157
7.4.5 English Query 157
7.4.6多结果集查询 159
7.4.7异步查询 159
7.4.9设置查询超时 161
7.4.8统计行数 161
7.6使用Viusal Basic进行调试 162
7.5与查询相关的错误消息 162
7.7定位SQL Server元素 163
第八章 检索数据和使用结果集 167
8.1查询过程 167
8.2使用单行结果集 168
8.3使用临时表 169
8.3.1限制临时表中的行数 170
8.4更新和插入数据 171
8.3.2使用WHERE子句限制行数 171
8.5使用批处理 173
8.5.1使用开放式批处理更新 173
8.5.2建立批处理 174
8.5.3批处理限制 175
8.5.4发送多个批处理 175
8.5.5使用批处理结果 175
9.1 DAO/Jet与SQL Server的历史 179
34.5.1 ADO:编写全局变量 179
第九章 Jet数据库引擎和DAO模式 179
第三部分 使用带有Jet数据库引擎的DAO 179
9.2 Jet访问远程数据库的方式 181
9.2.1 Jet与SQL Server:编写查询代码并创建临时表 181
9.2.2 Jet查询处理器 184
9.3理解DAO模型 185
9.3.1属性和方法 188
9.3.2集合 190
9.3.3传递对象模型 191
第十章 数据访问对象 193
10.1组件体系结构 194
10.2 DBEngine对象 194
10.3 Workspace对象 195
10.3.1使用IsolateODBCTrans属性 196
10.3.2 Workspace方法 196
10.4 Database对象 197
10.4.1附加表与直接链接 198
10.4.2 Database属性 201
10.4.3 Database方法 201
10.5 TableDef对象 202
10.5.1 TableDef属性 202
10.5.2 TableDef数据类型 203
10.6 Field对象 206
10.7 Index对象 208
10.8表和索引 208
10.9创建或添加表和索引 209
第十一章 配置和调整Jet引擎 211
11.1 Windows注册表数据库 211
11.1.1注册表范围 211
11.1.2创建并使用新的注册表键值 212
11.2了解Jet引擎选项 217
11.2.1 Microsoft ODBC驱动程序初始化设置 217
11.2.2细节 218
11.2.3调整MSysConf 221
第十二章 使用DAO/Jet进行连接 225
12.1.1活动语句 226
12.1 Jet的连接管理方案 226
12.2连接区享 227
12.1.2临时表提交/回滚行为 227
12.3连接缓存和失效 228
12.4自己管理连接 228
12.5打开附加表 231
12.6使用DAO/Jet方法创建附加表 233
12.7连接:常见的困难 234
13.1理解DAO/Jet临时表 237
第十三章 使用DAO/Jet访问数据 237
13.2创建DAO/Jet临时表 243
13.2.1编写OpenRecordset方法的代码 244
13.2.2结果集传递 245
13.3选择索引 247
13.4使用ODBC缓存 249
13.5 GetRows和Variant数组 250
13.6重定位当前行的指针 253
13.6.1当前行指针的有效性 254
13.6.2定位特定行 255
13.7.1使用DAO/Jet临时表 257
13.7更新DAO/Jet数据源 257
13.7.2使用基于SQL的操作查询更新 260
13.8处理DAO/Jet错误 263
第二十四章 执行Transact-SQL查询 265
14.1使用SQL传递查询 265
14.1.1典型的应用程序 266
14.1.2实现SQL传递查询 267
14.1.3创建SQL传递QueryDef对象 268
14.1.4使用具有附加表的SQL传递查询 270
14.1.5查询技术总结 275
14.2使用存储过程 276
14.2.1返回参数 276
14.2.2输出参数 279
14.3处理SQL Server消息 280
第十五章 使用Data控件 285
15.1应用Data控件 286
15.2使用Data控件处理SQL Server 287
15.3设置属性 287
15.4检查属性 289
15.5使用绑定型控件 290
第十六章 理解Jet查询处理器 293
16.1 Jet必须本地处理的结构 294
16.1.1支持的Viusal Basic操作符和函数 294
16.1.2用户定义的函数 295
16.1.3其他不支持的功能 295
16.1.4其他不支持的及有问题的表达式 295
16.2条件的分割 296
16.3输出的求值 296
16.4交叉表查询执行的删除 297
16.5外部连接 297
16.9标识符引用 298
16.7 LIKE操作符的通配符 298
16.8拥有者和表前缀 298
16.6生成发送到服务器的SQL 298
第十七章 使用ODBCDirect 299
17.1了解ODBCDirect接口 301
17.2激活ODBCDirect 303
17.3连接到数据库 304
17.4比较Database对象和Connection对象 305
17.4.1 rdoConnection对象与ODBCDirect Connection对象的比较 306
17.5.1 rdoResultset对象与Recordset对象的比较 308
17.5执行SQL查询 308
17.5.2了解QueryDef对象 309
17.5.3 rdoQuery对象与QueryDef对象的比较 311
17.6处理Recordset对象 312
17.6.1控制多个Recordset对象 314
17.7运行异步操作 315
17.8开放式批处理更新 315
17.9查看错误 316
17.10 ODBCDirect示例 316
17.10.1示例1:决定您的数据库在哪个Workspace中打开 316
17.10.2示例2:从服务器获取多个Recordset对象 317
17.10.3示例3:取消块操作 318
17.10.4示例4:使用dbRunAsync打开Recordset 319
17.10.5示例5:使用QueryDef对象 320
17.11将应用程序转换到ODBCDirect的提示 321
17.12使用Data控件 322
18.1分配数据库文件空间 325
18.2事务损失和破坏修复 325
第十八章 Jet:旅行者的日记 325
18.3备份Access数据库 326
18.4更新记录 326
18.5提示 327
第四部分 使用远程数据对象 331
第十九章 了解远程数据对象 331
19.1了解RDO 331
19.2设计特性 333
19.3比较RDO和DAO 337
19.4 RDO的缺点 339
19.5获得有关RDO的最新信息 341
19.6许可RDO 341
第二十章 远程数据对象的细节 343
20.1了解RDO模型 343
20.2 rdoEngine对象 344
20.2.1 rdoEngine的属性、事件和方法 345
20.3 rdoEnvironment对象 347
20.3.1 rdoEnvironment的属性、事件和方法 348
20.3.2事务管理 349
20.3.4选择临时表驱动程序 351
20.3.3可选的事务管理器 351
20.3.5了解服务器端临时表 353
20.4 rdoConnection对象 354
20.4.1指定默认数据库 355
20.4.2使用rdoConnection对象 355
第二十一章 与RDO连接 359
21.1定位和命名SQL Server 359
21.2建立连接 360
21.2.1文件数据源 363
21.2.2 SAVEFILE关键字 364
21.2.3异步打开连接 367
21.2.4处理单独的rdoConnection对象 367
21.2.5管理RDO2.0集合 369
21.2.6其他连接参数 370
21.2.7连接问题 370
第二十二章 使用RDO UserConnection设计器 371
22.1了解自定义的UserConnection对象 372
22.2创建自定义的UserConnection对象 373
22.3按方法执行查询和存储过程 378
22.3.1引用新的rdoResultset 380
22.3.2建立自己的查询 382
22.3.3对使用自己的SQL及参数的提示 386
22.5使用UserConnection对象的事件 387
22.4在运行时设置UserConnection属性 387
第二十三章 使用RDO创建结果集 389
23.1是否选择临时表 392
23.1.1 rdOpenForwardOnly类型的Resultset对象 393
23.1.2 rdOpenStaic类型的rdoResultset对象 394
23.1.3 rdOpenKeyset类型的rdoResultset对象 394
23.1.4 RdOpenDynamic类型的rdoResultset对象 395
23.1.5建立无临时表结果集 395
23.1.6在客户端和服务器端临时表之间选择 396
23.1.7调整临时表Rowset的大小 398
23.2支持rdoResultset临时表 398
23.3页锁定 401
23.3.1断开rdoResultset 对象 404
23.4指定结果集的源 404
23.5管理异步操作 406
23.5.1 RDO 2.0的异步增强 407
23.5.2 RDO 2.0事件 407
23.6调整rdoResultset操作的性能 409
23.6.1管理临时存储过程 409
23.6.2使用OpenResultset选项 410
23.7.1 RDO 2.0集合管理 412
23.7 rdoResultset对象 412
23.7.2研究rdResultset 的方法和属性 413
23.7.3管理rdoResultset事件 416
23.7.4处理与查询相关的rdoConnection事件 416
23.7.5管理rdoResultsets 417
23.7.6使用GetRows 419
23.8 rdoColumn对象 419
23.8.1 rdoColumn属性 419
23.8.2寻址列数据 421
23.8.3映射数据库方案 421
24.1开放式批处理更新概述 423
第二十四章 开放式批处理更新 423
24.2使用RDO执行开放式批处理更新 424
24.2.1建立连接 424
24.2.2创建rdoQuery对象 425
24.2.3选择正确的CursorType选项 426
24.2.4选择正确的并选项 426
24.2.5执行Row-Retrieval查询 426
24.2.6检索行 427
24.2.8进行更改 430
24.2.7从连接断开 430
24.2.10进行更新 431
24.2.9与连接重新接通 431
24.2.11检查错误和解决冲突 433
第二十五章 进一步使用RDO 435
25.1 rdoQuery对象 435
25.1.1创建rdoQuery对象 436
25.1.2研究rdoQuery属性 440
25.2使用参数查询 443
25.2.1创建参数查询 444
25.2.2使用ODBC查询语法 453
25.3执行存储过程 455
25.4管理多结果集 456
25.5使用基于页的数据类型 459
25.5.1使用Chunk方法获取基于页的数据 462
25.5.2访问BLOB的提示和技术 463
25.5.3随机的BLOB提示 464
25.5.4一个BLOB示例 465
25.6面对rdoTable对象 469
26.1修改数据的选项 473
第二十六章 使用RDO接口维护数据 473
26.1.1读写临时表 474
26.1.2 Execute方法 475
26.2添加数据 475
26.3更新数据 476
26.3.1定位当前行指针传送更新 477
26.3.2使用只读临时表更新 477
26.3.3使用Execute方法更新 478
26.5出现错误时 480
26.4删除数据 480
第二十七章 使用RemoteData控件 483
27.1 RemoteData控件的不同点 484
27.2 RemodteData控件的属性 486
27.2.1 rdoEnvironment属性 486
27.2.2 rdoConnection属性 487
27.2.3 rdoResultset属性 487
27.3 RemoteData控件的方法和事件 488
27.4建立绑定控件 491
28.1初识OLE DB 497
第五部分 使用ADO和OLE DB 497
第二十八章 了解ADO和OLE DB 497
28.1.1“万能”的解决方法 498
28.1.2远望OLE DB 500
28.1.3使用OLE DB的结构 503
28.2初识ADO 508
28.2.1 ADO 2.0简介 508
28.2.2 ADO对象模型 514
28.2.3 ADO对象 516
28.2.4从RDO观察ADO对象模型 518
第二十九章 研究ActiveX Data Objects 521
29.1了解ADO对象模式 521
29.1.1 ADO集合 523
29.2 ADO Connection对象 525
29.2.1管理连接状态 525
29.2.2 Connection对象集合 526
29.2.3 Connection对象方法 527
29.2.4 Connection对象属性 532
29.2.6 Connection事务管理 537
29.2.5 Connection对象事件 537
29.3 ADO Command对象 538
29.3.1 Command对象集合 539
29.3.2 Command对象方法 540
29.3.3 Command对象属性 543
29.4 ADO Recordset对象 545
29.4.1 Recordset对象集合 546
29.4.2 Recordset对象方法 546
29.4.3 Recordset对象属性 568
29.5 ADO Field对象 579
29.5.1 Field对象属性 580
29.6.1 Parameter对象方法 585
29.6 ADO Parameter对象 585
29.6.2 Parameter对象属性 586
29.7 ADO Property对象 588
29.7.1 Property对象属性 588
29.8 ADO Error对象 590
29.8.1 Error对象属性 590
第三十章 连接ADO 593
30.1建立客户/服务器连接 593
30.1.1 ADO连接选项 594
30.1.2建立ConnectionString 596
30.1.3建立OLE DB Data Link 600
30.1.4如何标记Data Link Properties对话框 601
30.1.5修补Data View/Environment连接 607
30.2使用基于代码的方法连接 608
30.2.1使用ADO Connection的Open方法连接 608
30.2.2使用ADO的Recordset Open方法连接 610
30.2.3处理默认值 611
30.2.4更高级的连接 613
30.2.5 ADO连接提示 614
30.3从组件连接 615
第三十一章 建立ADO Recordset 619
31.1建立ADO Recordset对象 621
31.1.1单机ADO Recordset对象 621
31.1.2基于文件的ADO Recordset对象 623
31.1.3远程数据库中的ADO Recordset对象 625
31.2.1告诉ADO如何(以最佳方式)运行查询 629
31.2 ADO查询 629
31.2.2运行参数查询要小心 631
31.2.3使用Prepared语句 636
31.3 ADO临时表 638
31.3.1 ADO临时表是什么,它们为什么是邪恶的? 638
31.3.2怎样才算是好的ADO临时表? 639
31.3.3 ADO临时表是怎样工作的? 639
31.3.4不同类型的ADO临时表 641
31.3.5何时使用临时表? 643
31.3.6 ADO CursorLocation选择 644
31.3.7客户端ADO临时表 645
31.3.8服务器端ADO临时表 645
31.3.9可更新的ADO临时表 647
31.4使用ADO管理同步 648
31.5获取ADO Recordset数据 648
31.5.1引用一行和一列 649
31.5.2绑定数据源控件 650
31.5.3使用GetRows方法 650
31.5.4使用GetString方法 651
31.6筛选、查找和排序ADO Recordset数据 651
31.6.1筛选ADO Recordset 652
31.6.2在ADO Recordset数据中查找资料 656
31.6.3排序ADO Recordset数据 657
第三十二章 使用ADO事件和异步操作 659
32.1 ADO事件类型 659
32.1.1 Will事件 660
32.1.2 During事件 660
32.1.3 Complete事件 660
32.2启用事件处理程序 660
32.3.1状态参数 661
32.3检查事件处理程序参数 661
32.3.2 Error参数 662
32.3.3 Object参数 663
32.3.4 Reason参数 663
32.4两个事件示例 664
32.4.1连接示例 664
32.4.2查询示例 665
32.5使用Will和Complete事件处理程序 667
32.5.1不成对的事件处理程序 669
32.5.2多事件处理程序和单独操作 669
32.6管理异步操作 669
32.6.1使用异步选项 670
32.6.2异步操作的一些细微差别 671
第三十三章 让ADO飞起来 673
33.1建立自定义的ADO Command对象 673
33.1.1作为Connection方法的Command 674
33.2管理复杂的(存储)过程 676
33.2.1管理多结果集 676
33.2.2管理输出和返回值参数 681
33.2.3使用Data Environment管理存储过程 684
33.2.4使用Data Object Wizard处理存储过程 685
33.3执行开放式客户批处理操作 685
33.3.1冲突管理 686
33.3.2导致冲突 688
33.3.3识别冲突 688
33.3.4 Resync方法 689
33.3.5事务和冲突 689
33.4使用基于页的数据 690
33.5处理特殊情况 695
33.5.1处理PRINT和 RAISEROR 695
33.5.2处理COMPUTE子句 698
33.5.3处理NULL 701
33.5.4使用Showplan调试 701
33.5.5使用Data Environment建立Recordest和DataReport 702
第三十四章 从RDO移植到ADO 705
34.1从RDO角度考虑的ADO 706
34.2是否移植到ADO 706
34.3通过RDO解决基本的数据访问问题 707
34.3.1 RDO:全局变量编码 708
34.3.2 RDO:建立连接 709
34.3.3 RDO:连接操作完成以后 710
34.3.4 RDO:运行基本的查询 710
34.3.5 RDO:使用WillExecute事件 711
34.3.6 RDO:管理结果集 711
34.3.7 RDO:在MSFlexGrid中显示结果集 712
34.4 通过RDO访问更复杂的数据 713
34.4.1 RDO:执行更复杂的过程 714
34.4.2 RDO:执行返回OUTPUT值的存储过程 715
34.4.3 RDO:执行多结果集的存储过程 715
34.4.4 RDO:执行操作查询 716
34.4.5 RDO:执行开放式的批处理查询 716
34.5通过ADO解决基本的数据访问问题 718
34.5.2 ADO:建立连接 719
34.5.3 ADO:当连接操作完成时 720
34.5.4 ADO:运行基本查询 722
34.5.5 ADO:使用WillExecute事件 722
34.5.6 ADO:管理结果集 722
34.5.7 ADO:在MSFlexGrid中显示结果集 724
34.6 使用ADO访问更复杂的数据 725
34.6.1 ADO:执行参数查询 725
34.6.2 ADO:执行参数驱动的存储过程 726
34.6.3 ADO:执行返回OUTPUT值的存储过程 726
34.6.4 ADO:执行多重结果集存储过程 727
34.6.5 ADO:执行操作查询 728
34.6.6 ADO:执行开放式批处理查询 728
34.7移植提示和技巧 730
第三十五章 使用Transact-SQL Debugger 735
第六部分 使用新工具 735
35.1安装SQL Server和Visual Basic 736
35.1.1客户端安装 736
35.1.2服务器端安装 737
35.2交互地访问TSQL Debugger 740
35.3从代码中访问TSQL Debugger 743
35.4 调试TSQL Debugger 745
第三十六章 使用Data View窗口和Query Builder 747
36.1 Data View窗口 747
36.1.1添加Data Link 748
36.1.2添加DataEnvironment Connection 750
36.1.3浏览SQL Server数据库 750
36.2使用Visual Database Tools管理SQL Server数据库 752
36.2.1创建表格 752
36.2.2修改表格 754
36.2.3建立索引 755
36.2.4创建关系 756
36.2.5创建数据库方案 757
36.3使用Query Builder创建查询 758
36.2.6创建视图 758
36.3.1测试您的查询 761
36.3.2创建参数查询 762
36.3.3创建存储过程 763
36.4使用Query Builder处理SQL Server 765
36.4.1 SQL Server版本 765
36.4.2 SQL语法 766
36.4.3标识数据库对象 766
36.4.5区分大小写 767
36.4.6创建别名 767
36.4.4使用引号标识 767
36.4.7在表达式中使用操作符 768
36.4.8在Grid和SQL窗格中输入关键字 768
36.4.9输入货币值 768
36.4.10使用DISTINCT 769
36.4.11建立外部连接 769
36.4.12输入空格 769
36.4.13包括优化提示说明 769
36.4.14 ANSI到IEM的字符转换 769
36.4.15不支持和部分支持查询类型 770
第三十七章 仔细考察Data Environment设计器 773
37.1启动Data Environment设计器 775
37.1.7将控件映射到字段 779
37.1.2使用Data View窗口添加Data Environment对象 781
37.2从Data Environment处理存储过程 781
37.2.1访问带有参数的存储过程 785
37.3使用分级的Hierarchical结果集和其他子集 789
37.3.1建立到Hierarchy的绑定接口 792
37.3.2清理网格 792
38.1 Data Object Wizard入门 795
第三十八章 尝试Data Object Wizard 795
38.2 DOW设计问题 796
38.3设置DOW命令 797
38.4一个简单的DOW示例 798
38.4.1使用DOW创建Data类 799
38.4.2使用DOW创建数据绑定的UserControl 806
38.4.3完成简单的示例 809
38.5 DOW提示 810
38.6.4 Recordsets 812
38.6.3数据绑定 812
38.6.1其他控件的变化 812
38.6.2数据Class事件 812
38.6在应用程序中使用DOW对象 812
38.6.5 Init…方法 813
38.6.6系统生成的主键值 813
38.6.7 UserControl的初始化 813
38.7 DOW生成的数据Class代码 814
38.7.1 clsDow 814
38.7.2 rscls 814
38.8 DOW生成的UserControl代码 815
38.8.1 SingleRecord UserControl类型 816
38.8.2 DataGrid UserControl类型 817
38.8.3 ListBox ComboBox UserControl类型 818
附录A 设置测试数据库 821
A.1安装Biblio数据库 821
A.1.1在SQL Server 6.5上安装Biblio 821
A.1.2在SQL Server 7.0上安装Biblio 822
A.2创建DSN 824
A.3添加存储过程 827
A.5设置示例应用程序 828
A.4 Attach.MDB数据库 828
附录B SQL Server错误代码解释 829
附录C SQL Server提示与技巧 839
C.1大量复制程序的技巧 839
C.2存储过程的技巧 841
C.3 Transact-SQL的常规技巧 842
C.4增强性能的技巧 843
C.5提高设计效率的技巧 845
C.6从SQL Server访问Visual Basic组件 846
C.6.2调查典型的方案 847
C.6.1理解结构 847
C.6.3尝试使用扩展存储过程 848
C.6.4从存储过程访问COM对象 849
C.6.5 SQL Server OLE存储过程 850
C.6.6建立Visual Basic组件 851
C.6.7检查服务器端OLE Automation存储过程批处理 854
C.6.8数据类型转换 856
C.6.9检查OLE Automation存储过程错误处理程序 857