前言 1
第1章 连接数据 11
1.0简介 11
1.1存储连接字符串 14
1.2生成连接字符串 21
1.3连接到SQL Server 23
1.4连接到SQL Server的一个命名实例 26
1.5使用IP地址连接到SQL Server 28
1.6使用ASP.NET的集成安全性连接到SQL Server 31
1.7连接到Oracle数据库 34
1.8连接到OLE DB数据源 37
1.9连接到ODBC数据源 39
1.10连接到Microsoft Access数据库 41
1.11连接到密码保护的Microsoft Access数据库 42
1.12在ASP.NET中连接到Microsoft Access数据库 44
1.13连接到Microsoft Excel工作簿 47
1.14连接到文本文件 50
1.15更改一个已打开连接的数据库 54
1.16设置连接池选项 56
1.17利用连接池 61
1.18对池中的连接使用事务 64
1.19显示连接属性对话框 65
1.20显示数据链接属性对话框 67
1.21监视连接 69
第2章 使用断开连接的数据对象 75
2.0简介 75
2.1创建DataColumn并把它添加到DataTable 76
2.2创建DataTable,并把它添加到DataSet 81
2.3在数据源和DataSet之间映射表名和列名 85
2.4把.NET数据提供程序的数据类型映射为.NET框架的数据类型 88
2.5向DataTable添加一个经过计算产生的列 96
2.6创建唯一性约束 97
2.7创建单列和多列的主键 103
2.8创建一个自动增长的主键 105
2.9创建外键约束 107
2.10创建数据关系 112
2.11通过代码创建DataSet 117
2.12向一个显示父表数据的子DataTable添加一个列 121
2.13在父DataTable中添加一个列,对一个子DataTable的列值进行聚合 124
2.14在DataTable和DataRow数组之间转换 127
2.15访问DataRow数组中的数据值 131
2.16创建一个强类型的DataSet 133
2.17控制强类型DataSet中所使用的名称 139
2.18替换强类型DataSet中的null值 144
第3章 查询和提取数据 148
3.0简介 148
3.1执行不返回结果集的查询 149
3.2执行返回单值的查询 151
3.3使用DataReader提取一个结果集流 153
3.4访问DataReader中的数据值 155
3.5使用DataTable或DataSet提取一个结果集 159
3.6访问DataTable或DataSet中的数据值 162
3.7处理强类型的DataSet中的数据 165
3.8处理强类型的DataSet的父子关系 171
3.9在强类型的DataSet中使用DataView 174
3.10测试一个查询是否返回一个空的结果集 176
3.11计数符合标准的记录 178
3.12判断一个DataReader所返回的记录数 180
3.13执行返回多个结果集的查询 183
3.14提取DataSet的架构和约束信息 187
3.15提取层次式数据 190
3.16在无类型的DataSet中父表和子表之间浏览 194
3.17执行参数化查询 196
3.18使用SQL Server存储过程提取数据 199
3.19使用Oracle提供程序提取多个结果集 201
3.20向查询参数传递Null值 204
3.21使用表-值类型作为参数 207
3.22从存储过程提取返回值 210
3.23提取存储过程的输出参数 213
3.24触发和处理存储过程的错误 216
3.25执行SQL Server标量值函数 220
3.26执行SQL Server表值函数 222
3.27使用LINQ查询DataSet 224
3.28使用LINQ查询一个SQL Server数据库 230
3.29从文本文件提取数据 236
3.30从Microsoft Excel工作簿提取数据 240
3.31使用消息队列异步查询数据 243
第4章 搜索和分析数据 249
4.0简介 249
4.1确定两个DataSet之间的数据差别 250
4.2组合来自不同数据源的数据 256
4.3在DataTable或DataView中对数据行进行过滤 259
4.4查找DataTable或DataView中的数据行 261
4.5对DataTable中的数据进行过滤和排序 263
4.6过滤DataTable中的null字段 266
4.7访问DataTable中被删除的行 268
4.8选择DataTable的TOP N个行 273
4.9执行使用COMPUTE BY的查询 276
4.10使用Shape语言提取层次式数据 278
4.11提取记录的随机样本 282
4.12使用通用表表达式 285
4.13执行递归式查询 287
4.14提取排序结果集 289
4.15提取Pivot和Unpivot表 293
4.16对结果集中的每个行调用一个函数 298
第5章 添加和修改数据 300
5.0简介 300
5.1使用自动增长列 并避免产生冲突 301
5.2从SQL Server获取标识列的值 304
5.3从Microsoft Access获取自动编号值 309
5.4从Oracle提取序列值 312
5.5修改Microsoft Excel工作簿中的数据 316
5.6修改文本文件中的数据 320
5.7获取更新错误 324
5.8添加具有自动增长键的父/子行 328
5.9添加具有GUID主键的记录 331
5.10使用T-SQL的行构造函数把多个行插入数据库表中 334
5.11用不同数据源的数据更新一个数据源 336
5.12更新主键值 340
5.13在运行时获取存储过程的参数信息 345
5.14更新具有多对多关系的DataSet 349
5.15使用消息队列异步更新数据 364
5.16用DataView控制数据的编辑、删除或添加 370
5.17使用CommandBuilder时克服关键字冲突 374
5.18捕捉SQL Server数据库中的数据修改 379
第6章 复制和传输数据 385
6.0简介 385
6.1把行从一个DataTable复制到另一个DataTable 386
6.2把表从一个DataSet复制到另一个DataSet 389
6.3把DataReader转换为DataTable 393
6.4把DataReader转换为DataSet 399
6.5把DataTable转换为DataReader 401
6.6把DataSet转换为DataReader 403
6.7对数据进行串行化 406
6.8对数据进行反串行化 410
6.9合并两个DataSet对象的数据 412
6.10合并两个数据库表的数据 416
6.11对DataSet进行加密 420
6.12保护登录信任 427
6.13把查询结果导出为字符串 431
6.14把查询结果导出为数组 435
6.15把ADO Recordset加载到DataSet 439
6.16把DataSet转换为ADO Recordset 441
第7章 维护数据库的完整性 453
7.0简介 453
7.1使用分布式事务 454
7.2使用手工事务 460
7.3在SQL Server.NET数据提供程序中嵌套手工事务 463
7.4协同使用ADO.NET和SQL Server DBMS事务 467
7.5在DataAdapter中使用事务 472
7.6在更新相关表中的数据时避免引用完整性错误 475
7.7用列表达式实行业务规则 492
7.8从SQL Server数据库提取约束 496
7.9检查并发性错误 507
7.10解决数据冲突 512
7.11使用事务隔离级别保护数据 520
7.12在SQL Server数据库中指定锁提示 524
第8章 在.NET的Windows和Web窗体用户界面中通过代码处理数据 530
8.0简介 530
8.1把一个字段的数据加载并绑定到一个Web窗体控件 531
8.2把数据绑定到一个Web窗体控件 535
8.3把数据绑定到Web窗体的DetailsView控件 538
8.4把数据绑定到Web窗体的Repeater控件 542
8.5把数据绑定到Web窗体的DataList控件 546
8.6把数据绑定到Web窗体的GridView控件 555
8.7修改和更新Web窗体控件GridView中的数据 560
8.8把数据绑定到Web窗体控件FormView控件 569
8.9在Web窗体应用程序中对主-明细数据进行同步 573
8.10在Web窗体控件中显示数据库中的一幅图像 578
8.11在Web窗体应用程序中对客户端的数据进行本地化 581
8.12把数据加载到Windows Forms控件并绑定到一个字段 586
8.13把数据绑定到Windows Forms控件 590
8.14把数据绑定到Windows Forms的DataGridView控件 593
8.15修改和更新Widnows Forms控件DataGridView中的数据 596
8.16使用Windows Forms的BindingNavigator和BindingSource控件 599
8.17在Windows Forms应用程序中同步主-明细数据 603
8.18在Windows Forms控件中显示一幅来自数据库的图像 607
8.19把一组单选按钮绑定到一个Windows Forms日期字段 609
8.20在Windows Forms的DataGridView控件中搜索数据 616
第9章 处理XML数据 621
9.0简介 621
9.1使用XML文件保存和加载DataSet或DataTable 622
9.2使用XSD架构文件保存和加载DataSet结构 628
9.3把数据保存为XML时对列值进行格式化 633
9.4创建一个XML文件显示对DataSet的修改 636
9.5对DataSet和XML文档进行同步 640
9.6用非XML数据类型列存储和提取XML 645
9.7处理SQL Server的XML数据类型列 648
9.8使用XPath查询提取数据 651
9.9直接从SQL Server读取XML数据 654
9.10使用XSLT转换DataSet 656
9.11使用XML模板查询填充DataSet 659
9.12使用OpenXML把多个修改更新到SQL Server 664
第10章 优化.NET数据访问 672
10.0简介 672
10.1在一个连接上执行多个命令 674
10.2异步执行SQL语句 676
10.3以异步方式同时执行SQL语句 683
10.4异步地创建一个DataReader对象 689
10.5异步地填充一个DataSet 693
10.6取消一个异步查询 697
10.7对数据进行缓存 699
10.8提高分页性能 703
10.9在SQL Server中进行XML体加载 709
10.10在SQL Server中进行体拷贝 713
10.11用类型访问符提高DataReader的性能 720
10.12用列序号提高DataReader的性能 723
10.13调试SQL Server存储过程 726
10.14在填充DataSet时提高性能 730
10.15在SQL Server中读取和写入大值 734
10.16读取和写入SQL Server用户定义类型(UDT) 739
10.17读取和写入Oracle的大数据 743
10.18用DataAdapter执行批更新 748
10.19定期自动刷新DataTable 757
10.20当底层数据改变时自动刷新DataTable 761
10.21提取SQL Server运行时统计信息 765
10.22编写独立于提供程序和数据库的代码 768
第11章 枚举和维护数据库对象 778
11.0简介 778
11.1枚举SQL Server实例 780
11.2提取数据库的元数据 782
11.3从SQL Server提取数据库架构信息 786
11.4从SQL Server提取列的默认值 794
11.5确定SQL Server表中列的大小 799
11.6提取SQL Server的查询计划 803
11.7在不返回数据的情况下提取SQL Server的列元数据 806
11.8创建一个新的SQL Server数据库 807
11.9在SQL Server数据库中添加一个表 811
11.10根据一个DataTable架构创建一个数据库表 814
11.11根据SQL Server的数据关系创建DataSet的数据关系 819
11.12创建一个新的Microsoft Access数据库 829
11.13列出一个Access数据库中的表 831
11.14枚举.NET数据提供程序 835
11.15枚举OLE DB提供程序 837
11.16枚举ODBC驱动程序 841
11.17修改SQL Server的用户密码 842
第12章 SQL Server的CLR集成 846
12.0简介 846
12.1创建存储过程 854
12.2创建一个标量值函数 861
12.3创建一个表值函数 864
12.4创建一个聚合函数 868
12.5创建一个用户定义类型 872
12.6创建一个DML触发器 881
12.7创建一个DDL触发器 888
附录 ADO.NET自1.0版本以来的新变化 893