图书目录

目    录

第1章  探索应用程序的体系结构 1

1.1  概述 1

1.2  选择正确的体系结构 1

1.3  理解工具集 3

 1.3.1  ADO和ADO.NET的发展

       历程 3

 1.3.2  Jet和ODBC的产生 4

 1.3.3  数据访问对象的产生 5

 1.3.4  OLE DB的产生 5

 1.3.5  ADO.NET的产生 6

1.4  了解应用程序的设计约束 7

 1.4.1  影响设计的因素 8

 1.4.2  在实现之前进行设计 10

1.5  选择正确的数据访问接口 11

 1.5.1  选择正确的数据访问

       提供者 12

 1.5.2  SQL Server Everywhere 12

1.6  选择正确的数据库管理系统 18

 1.6.1  SQL Server开销 18

 1.6.2  SQL Server的安全性 19

 1.6.3  性能 20

 1.6.4  多用户问题 26

 1.6.5  可伸缩性问题 27

 1.6.6  局限性问题 28

 1.6.7  客户端的限制 29

 1.6.8  服务器的限制 30

 1.6.9  维护和管理 30

 1.6.10  管理维护任务 31

 1.6.11  数据恢复的重要性 31

 1.6.12  管理资源 35

1.7  理解基本的数据访问

体系结构 36

 1.7.1  多层设计 36

 1.7.2  建立独立的应用程序 38

 1.7.3  基于ASP Browser的体系

       结构 49

1.7.4  XML Web 服务的

体系结构 50

1.8  小结 50

第2章  SQL Server的工作原理 53

2.1  概述 53

2.2  服务器和版本 53

 2.2.1  SQL Server的并行执行 56

 2.2.2  SQL Server Express Edition

       简介 56

 2.2.3  Workgroup Edition简介 64

2.3  安装SQL Server 64

2.4  运行SQL Server服务 70

 2.4.1  检查SQL Server服务 70

 2.4.2  启动SQL Server服务 72

2.5  浏览SQL Server系统数据库 73

 2.5.1  SQL Server实例 73

 2.5.2  多个实例或多个数据库? 74

 2.5.3  用户和系统数据库 74

 2.5.4  创建用户数据库 76

 2.5.5  管理用户数据库 76

2.6  理解SQL Server的安全系统 77

 2.6.1  SQL Server 2005中的对象 78

 2.6.2  系列问题:SQL Server 2005

       对所有权的说明 81

 

 2.6.3  理解登录、用户名以及

       模式 82

2.7  管理SQL Server的连接 87

 2.7.1  理解数据访问接口的角色 88

 2.7.2  理解协议 88

 2.7.3  打开连接 89

 2.7.4  调试连接 92

 2.7.5  选择连接策略 94

2.8  使用SQL Query Tool 96

2.9  创建SELECT查询 98

 2.9.1  使用表和列的别名 100

 2.9.2  SELECT操作简介 101

 2.9.3  理解WHERE子句 101

 2.9.4  通过参数传递字面值 102

 2.9.5  减少返回的行数 103

 2.9.6  通过WHERE子句执行

       JOIN操作 104

 2.9.7  处理特定类型的查询问题 108

2.10  创建和查询视图 118

2.11  实现业务规则 121

2.11.1  实现具有扩展属性的

 业务规则 122

2.11.2  通过T-SQL规则、约束

 和默认值实现业务规则 127

2.12  User-Defined(别名)类型 129

2.13  实现约束 130

2.14  通过批处理文件和脚本来

 管理数据库和查询 132

2.15  查询优化器和查询计划 133

 2.15.1  查看和调整查询计划 133

 2.15.2  检查客户统计数据和

       改变计划 135

 2.15.3  执行查询计划 138

2.16  理解缓存 138

2.17  执行动作命令 140

 2.17.1  插入新行 141

 2.17.2  更新行 147

2.18  存储过程简介 155

2.19  触发器简介 157

 2.19.1  创建DML触发器 157

 2.19.2  创建DDL触发器 158

2.20  通过事务来保护数据

 完整性 158

2.21  管理功能 159

 2.21.1  附加.MDF数据库文件 159

 2.21.2  设置Auto Close选项 161

 2.21.3  导入和导出数据 161

 2.21.4  备份SQL Server

         数据库 162

2.22  事务日志的使用 163

2.23  小结 163

第3章  关系数据库101 165

3.1  概述 165

3.2  建立牢固的数据库设计基础 165

3.3  理解关系数据库的正规化 167

3.4  创建表、行和列 169

 3.4.1  SQL Server针对关系

       数据库的存储方式 169

 3.4.2  选择正确的数据类型 178

3.5  小结 183

第4章  Visual Studio入门 185

4.1  概述 185

4.2  我的经历 185

4.3  安装正确版本的

 Visual Studio 186

 4.3.1  处理CTP或Beta版本 187

 4.3.2  典型的安装过程 187

 4.3.3  安装MSDN文档 191

4.4  启动Visual Studio 192

4.5  定制Visual Studio 2005 193

 4.5.1  保存和加载自定义

       的配置 195

 4.5.2  创建自定义的项目模板 197

 4.5.3  联机配置或本地帮助 202

4.6  配置服务器(或数据库)

管理器 202

 4.6.1  通过Server Explorer创建

       新的数据库 203

 4.6.2  在代码中创建新的数据库 205

4.7  创建和管理数据库连接 205

4.8  通过Server Explorer管理

数据库对象 212

4.9  通过查询设计器管理查询 222

 4.9.1  熟悉Query Designer 222

 4.9.2  Query Designer窗格 223

 4.9.3  派生表的定义 225

 4.9.4  修改查询类型 225

 4.9.5  Query Designer(查询设计

       器)—— 重述 232

4.10  通过Server Explorer来查看

同义词 233

4.11  通过Server Explorer管理

 类型 234

4.12  使用Server Explorer管理

 汇编 237

4.13  使用Server Explorer管理

 服务器 237

4.14  小结 240

第5章  用Server Explorer管理   

    可执行程序 241

5.1  概述 241

5.2  创建和编辑存储过程 241

 5.2.1  比较SQL Server 2005和

       Visual Studio 2005 242

 5.2.2  进入SQL Server Management 

       Studio Express 243

5.3  创建新存储过程 243

5.4  用Run Selection执行T-SQL 250

5.5  调试存储过程 250

 5.5.1  针对本地实例的T-SQL

       调试 251

 5.5.2  在存储过程中用断点调试 253

5.6  在远程实例上调试存储过程 255

5.7  从代码调试存储过程 258

5.8  使用Server Explorer管理

函数 260

5.9  小结 268

第6章  构建数据源、数据集和表

    适配器 269

6.1  概述 269

6.2  创建YADAI的原因 270

6.3  强类型数据是否重要 271

6.4  什么是数据源 272

6.5  什么是TableAdapter 275

6.6  TableAdapter中缺少什么 276

6.7  创建基于数据库的数据源 277

6.8  配置TableAdapter 283

 6.8.1  添加参数到查询中 289

 6.8.2  选择查询方法进行生成 291

6.9  使用拖放绑定TableAdapter 294

 6.9.1  定制生成的UI 296

 6.9.2  使用SmartTag管理绑定

       控件 297

 6.9.3  绑定到Details 298

 6.9.4  绑定到自定义控件 298

6.10  不通过拖放直接使用

 TableAdapter 299

6.11  在Data Source Designer中

 管理DataTable类 300

 6.11.1  设置DataTable属性 300

 6.11.2  生成的窗体代码 301

6.12  在应用程序间移动数据源 301

6.13  创建Web服务数据源 302

 6.13.1  什么是Web服务 302

 6.13.2  构造一个示例Web

         服务 304

 6.13.3  使用和测试Web服务 310

 6.13.4  在UI中提供Web服务

         数据源 312

6.14  小结 313

第7章  管理数据工具和数据绑定 315

7.1  概述 315

7.2  漫游Visual Studio Toolbox 316

 7.2.1  提供废弃的数据访问控件 317

 7.2.2  找到正确的控件 318

 7.2.3  理解 Tool Tray 319

7.3  使用Dataset Toolbox元素 319

7.4  数据绑定 321

7.5  使用BindingSource 类 326

 7.5.1  使用EndEdit和CancelEdit 

       方法 331

 7.5.2  使用BindingSource类的

       数据绑定 333

7.6  使用BindingNavigator控件 334

7.7  使用DataGridView控件 335

7.8  使用ProgressBar控件 337

7.9  小结 338

第8章  ADO.NET入门 339

8.1  概述 339

8.2  数据访问的挑战 339

8.3  ADO.NET总览 340

8.4  使用Visual Studio Object 

Browser研究ADO.NET 342

 8.4.1  用Class Diagram研究

       ADO.NET 343

 8.4.2  解释名称空间 345

 8.4.3  对类名称的处理 346

 8.4.4  使用简写来寻址类 346

8.5  实例化ADO.NET对象 347

 8.5.1  理解代码的作用域 347

 8.5.2  理解对象实例化 349

 8.5.3  Visual Basic .NET中的

       Using代码块 350

8.6  研究System.Data.SqlClient

名称空间 351

8.7  研究SqlClient名称空间 352

8.8  研究System.Data名称空间 359

 8.8.1  解释System.Data命名

       约定 359

 8.8.2  理解System.Data.DataSet和

       DataTable对象 360

 8.8.3  是否使用JOIN—— 这是个

       问题 370

8.9  小结 371

第9章  建立连接 373

9.1  概述 373

9.2  连接策略—— 包括安全 373

9.3  配置服务器及防火墙 375

9.4  连接策略 380

 9.4.1  实时连接 380

 9.4.2  持久连接 381

 9.4.3  理解MARS及其含义 381

 9.4.4  为连接对象选择正确的

       作用域 382

9.5  建立连接 383

9.6  编写代码创建连接 386

 9.6.1  什么是ConnectionString 386

 9.6.2  用SqlConnectionString

       Builder类创建一个

       ConnectionString 386

 9.6.3  保护ConnectionString 388

 9.6.4  保存ConnectionString 388

 9.6.5  建立Connection对象 389

 9.6.6  设置服务器名称关键字 392

 9.6.7  为实例设置别名 393

 9.6.8  重访问其他关键字 395

 9.6.9  配置连接池关键字的值 396

9.7  理解并管理连接池 397

 9.7.1  监控连接池 404

 9.7.2  防止连接池的溢出 405

9.8  为其他提供者建立

 ConnectionString 406

9.9  使用Visual Studio建立

ConnectionString 408

9.10  (半)自动打开和关闭连接 411

9.11  理解Connection属性 411

9.12  使用Connection方法 413

9.13  处理Connection事件 417

9.14  管理Connection异常 418

 9.14.1  关于异常 419

 9.14.2  理解SqlException类 420

 9.14.3  处理异常 422

9.15  小结 422

第10章  管理SqlCommand对象 423

10.1  概述 423

10.2  创建SqlCommand对象 423

 10.2.1  理解SqlCommand

    属性 424

 10.2.2  理解SqlCommand

    方法 429

 10.2.3  理解SqlCommand支持

    函数 433

10.3  将ad hoc查询集成到应用

 程序中 435

10.4  编码参数查询 440

 10.4.1  插入ad hoc查询 441

 10.4.2  理解SqlParameter

    Collection类 442

 10.4.3  理解SqlParameter类 444

10.5  验证值的有效性 454

 10.5.1  编写代码验证值的

         有效性 455

 10.5.2  处理复杂参数设计

         问题 459

 10.5.3  理解SqLCommand

         事件 462

10.6  执行存储过程 462

 10.6.1  处理OUTPUT、

    INPUT/OUTPUT和

    RETURN值参数 462

 10.6.2  处理行集和OUTPUT

         参数 464

10.7  小结 466

第11章  执行SqlCommand对象 467

11.1  概述 467

11.2  同步执行SqlCommand

 对象 467

11.3  了解SqlDataReader 474

 11.3.1  从流中取回数据 475

 11.3.2  从SqlDataReader流中

         取回元数据 480

 11.3.3  设计最好的

         SqlDataReader 481

11.4  填充数据结构 481

 11.4.1  通过设计进行有效

    填充 482

 11.4.2  如何填充 484

 11.4.3  填充InfoMessage消息 485

 11.4.4  填充OUTPUT和

         RETURN值参数 486

 11.4.5  用DataTable Load方法

         填充 487

 11.4.6  填充附加结果集 488

11.5  异步取回行 491

11.6  异步执行命令 493

 11.6.1  异步SqlCommand函数

    编码 494

 11.6.2  等待戈多或异步操作

    完成 497

11.7  小结 503

第12章  更新管理 505

12.1  概述 505

12.2  使用向导创建更新动作

 命令 505

 12.2.1  CommandBuilder应该

       完成的操作 506

 12.2.2  并发处理—— 更新和

       插入冲突 507

 12.2.3  ADO.NET CommandBuilder

       的工作方式 509

 12.2.4  编码CommandBuilder 510

12.3  替代更新:使用TableAdapter

 配置向导 512

 12.3.1  使用TableAdapter更新 512

 12.3.2  管理生成的参数 516

12.4  用服务器端逻辑进行复杂

 的更新 518

 12.4.1  使用事件执行自己的

    更新逻辑 518

 12.4.2  UpdateEvents的示例 520

 12.4.3  管理批模式更新 525

12.5  通过设计或冲突管理并发 527

12.6  小结 532

第13章  管理SQL Server CLR 

         可执行程序 535

13.1  概述 535

 13.1.1  Visual Basic .NET开发

    人员的作用 535

 13.1.2  Visual Studio的作用 536

13.2  发展CLR可执行程序技术 536

13.3  CLR可执行程序适用的

 场合 538

 13.3.1  可以或应该构建的可

       执行程序类型 539

 13.3.2  预览示例 540

13.4  设计CLR可执行程序 542

13.5  构建第一个CLR可执行

 程序 542

13.6  构建并部署一个CLR 

 可执行程序 548

13.6.1  准备部署一个CLR

可执行函数 548

 13.6.2  部署过程 552

13.7  建立测试环境 554

 13.7.1  在T-SQL中寻址CLR

    函数 555

 13.7.2  评价CLR可执行程序

    的性能 558

 13.7.3  创建表值函数 560

13.8  在CLR可执行程序中处理

ADO.NET 563

 13.8.1  使用上下文连接 563

 13.8.2  管理事务 565

 13.8.3  查询数据 565

 13.8.4  返回数据和消息 565

13.9  编码CLR存储过程 565

 13.9.1  构建CLR存储过程的

    示例 567

 13.9.2  测试CLR存储过程 573

 13.9.3  研究余下的CountWords

    示例 574

 13.9.4  评价CLR和T-SQL的

    性能 575

13.10  实现基本的用户定义类型

 CLR可执行程序 577

 13.10.1  编码CLR UDT 578

 13.10.2  调试CLR UDT 585

 13.10.3  使用SELECT查询

         UDT数据 587

 13.10.4  为提高性能调整

         自己的UDT 588

 13.10.5  引用并更新UDT值 589

 13.10.6  单步调试UDT代码 591

 13.10.7  验证自己的UDT

         数据 593

 13.10.8  实现UDT方法 594

13.11  实现高级CLR用户定义

 的类型 595

 13.11.1  用户自定义串行化 596

 13.11.2  构建iTypCurrencyV2 

         UDT 597

 13.11.3  测试typICurrencyV2 

         UDT 602

13.12  访问CLR UDT的其他

   方式 602

 13.12.1  引用UDT 603

 13.12.2  实例化UDT变量 604

 13.12.3  浏览LoanRequest

         代码 605

13.13  实现CLR聚集可执行

 程序 606

 13.13.1  什么是聚集 607

 13.13.2  CLR聚集示例 607

 13.13.3  测试CLR聚集 612

13.14  实现CLR触发器 612

 13.14.1  构建CLR触发器 613

 13.14.2  访问INSERTED和

         DELETED伪表 614

 13.14.3  处理更新 615

13.15  高级调试 616

13.16  UDT安全和IP安全 617

 13.16.1  提供自己的智能

         属性 619

 13.16.2  保护自己的智能

         属性 619

13.17  小结 620

第14章  创建并管理报表 621

14.1  概述 621

14.2  理解报表服务和RDL 622

14.3  Visual Studio 2005报表 626

  

  

14.4  Visual Studio 2005报表

 工具的内容 627

14.5  构建自己的第一个报表 628

 14.5.1  创建报表数据源 629

 14.5.2  展示报表 631

 14.5.3  配置ReportViewer控件 634

 14.5.4  测试报表 635

 14.5.5  完善报表 636

14.6  深入研究ReportViewer 640

 14.6.1  ReportViewer属性 640

 14.6.2  ReportViewer的方法 642

 14.6.3  ReportViewer事件 642

 14.6.4  LocalReport类 643

 14.6.5  ServerReport类 644

14.7  管理服务器报表 644

 14.7.1  呈现服务器报表 645

 14.7.2  管理服务器报表参数 646

 14.7.3  重新设置参数值 649

 14.7.4  有趣的ServerReport

    参数 649

 14.7.5  有趣的ServerReport 

       方法和函数 650

14.8  管理参数 650

 14.8.1  捕获参数 651

 14.8.2  报表参数 656

14.9  高级报表技术 658

 14.9.1  管理单击报表 658

 14.9.2  使用SubReport

    报表项 662

 14.9.3  RDLC的组成 664

 14.9.4  将RDL转换为RDLC 665

14.10  实现Matrix报表 666

 14.10.1  报表的数据考虑 666

 14.10.2  初始选择查询 667

 14.10.3  数据分组 668

 14.10.4  绑定Matrix报表 670

14.11  小结 679

第15章  本书总结 681

附录I  安装示例和测试数据库 683

I.1  安装示例 683

I.2  安装示例数据库 683

 I.2.1  附加示例数据库 684

 I.2.2  为实例创建别名 685

I.3  特定章节的配置问题 686

I.3.1  第8章:ADO.NET入门 686

I.3.2  第13章:管理CLR可执行

   文件 686

I.4  小结 687

附录II  重新安装DACW和Visual 

       Studio中没有的其他功能 689

附录III  监控SQL Server 691

III.1  用SQL Profiler监控

 SQL Server 691

 III.1.1  添加过滤条件 691

 III.1.2  配置SQL Profiler 692

 III.1.3  开始追踪 694

 III.1.4  评估追踪 695

 III.1.5  一些SQL Profiler提示 695

III.2  用性能计数器监控SQL

 Server和ADO.NET 696

III.3  小结 700

附录IV  创建并管理服务器端游标 701

IV.1  服务器端游标重要的原因 701

IV.2  ADO.NET如何实现游标 702

IV.3  如何管理服务器端游标 702

IV.4  ADO.NET如何创建服务器

 端游标 704

 IV.4.1  打开、关闭和重新打开

         连接 704

 IV.4.2  创建游标 704

IV.5  从游标取回数据 705

IV.6  更新服务器端游标 708

IV.7  小结 708