目录 3
第Ⅰ部分 3
开始使用ADO.NET 3
第1章ADO.NET概述 3
1.1 为什么引入新的对象模型? 3
1.2 ADO.NET 对象模型 4
1.2.1NET数据提供程序 5
1.2.2 为什么使用分离的类和库 7
1.2.3本书对NET数据提供 8
程序的介绍 8
1.2.4连接的对象 9
1.2.5断开连接的对象 12
1.2.6元数据 17
1.2.7强类型DataSet对象 18
1.3常见问题 20
第2章使用数据窗体向导生成ADO 21
NET应用程序 21
2.1 演示 21
2.2用数据窗体向导生成 22
数据绑定窗体 22
2.2.1选择连接 24
2.2.2从数据库中选择表 27
2.2.3在DataSet 中创建关系 28
2.2.4选择要显示的列 29
2.2.5选择显示样式 30
2.3 使用新的数据绑定窗体 30
2.3.1 在新数据绑定窗体中 32
显示数据 32
进行级联更改 33
2.3.3 向数据库提交更改 33
2.3.2利用DataRelation对象 33
2.3.4组件托盘 37
2.4 以数据窗体向导作为起始点 38
2.5常见问题 39
第Ⅱ部分 43
连接:使用NET数据提供程序 43
第3章 与数据库连接 43
3.1 使用Connection对象 44
3.1.1 创建Connection对象 47
3.1.2连接字符串 49
3.1.3 开放及关闭连接 53
3.1.4连接池 54
3.1.5销毁连接 56
3.1.6使用连接创建其他对象 57
3.1.7获取数据库架构信息 59
中处理Connection对象 61
3.2 Visual Studio.NET设计时特性 61
3.2.1在【服务器资源管理器】 61
3.2.2 向【服务器资源管理器】 63
中添加数据连接 63
3.2.3 向应用程序添加连接 65
3.2.4在运行时使用新连接 67
3.2.5 代码到哪里去了? 68
3.3 OleDbConnection对象参考 69
3.3.1 OleDbConnection 69
对象的属性 69
3.3.2 OleDbConnection 73
对象的方法 73
3.3.3 OleDbConnection对象事件 79
3.4 常见问题 82
4.1.1 创建Command对象 84
4.1 在代码中使用Command对象 84
第4章 数据库查询 84
4.1.2执行无返回行的查询 85
4.1.3 用DataReader对象检查 88
查询结果 88
4.1.4执行返回单值的查询 96
4.1.5执行参数化查询 97
4.1.6调用存储过程 99
4.1.7从输出参数中获取数据 101
4.1.8在Transaction中执行 103
查询 103
4.2 在Visual StudioNET中 104
创建Command对象 104
4.2.1 从工具箱中拖放 104
4.2.2指定一个连接 104
4.2.3 使用查询生成器 105
4.2.4在代码中使用新的 107
Command对象 107
4.2.5从【服务器资源管理器】 108
中拖放 108
4.3 Command、DataReader以及 109
Parameter对象参考 109
4.3.1 OleDbCommand 109
对象的属性 109
4.3.2 OleDbCommand 113
对象的方法 113
4.3.3 OleDbDataReader 117
对象的属性 117
4.3.4 OleDbDataReader 118
对象的方法 118
对象的属性 123
4.3.6 OleDbParameter 123
4.3.5创建Parameter对象 123
4.4常见问题 126
第5章用DataAdapter对象 137
获取数据 137
5.1什么是DataAdapter对象 138
5.1.1 DataAdapter与其他 138
查询对象的不同之处 138
5.1.2 DataAdapter剖析 140
5.2创建和使用DataAdapter对象 143
5.2.1 创建DataAdapter 143
5.2.2 DataAdapter构造函数 144
5.2.3从查询中获取结果 145
5.2.4将查询结果映射到 150
DataSet中 150
5.2.5处理批查询 152
5.2.6从存储过程中获取行 154
5.2.7获取架构信息 154
5.3 在Visual Studio.NET中 155
创建DataAdapter对象 155
5.3.1 从工具箱中拖放 155
DataAdapter 155
5.3.2使用【数据适配器 156
配置向导】 156
5.3.3从【服务器资源管理器】 160
中拖放 160
5.3.4预览DataAdapter的结果 161
5.3.5 检查向导所生成的代码 161
5.4 DataAdapter参考 162
5.4.1 DataAdapter对象的属性 162
5.4.2 DataAdapter对象的方法 167
5.4.3 DataAdapter对象的事件 173
5.5常见问题 176
第 Ⅲ部分 181
处理脱机数据-ADO.NET Data Set 181
第6章处理DataSet对象 181
6.1 DataSet的特性 181
6.1.1处理脱机数据 181
6.1.2浏览、排序、搜索 182
和过滤 182
6.1.3处理分级数据 182
6.1.4缓存更改 182
6.1.5 XML的完整性 183
6.1.6统一功能 183
Fill创建的结构 184
6.2.2 查看调用DataAdapter 184
6.2.1创建数据集对象 184
6.2 使用DataSet对象 184
6.2.3 查看DataAdapter 186
返回的数据 186
6.2.4校验DataSet中的数据 189
6.2.5编写代码创建Data 192
Table对象 192
6.2.6修改DataTable内容 206
6.3 在Visual Studio.NET中 217
使用DataSet对象 217
6.3.1 由DataAdapter对象 217
生成DataSet 217
6.3.2从零创建新DataSet 219
6.3.3创建非类型化DataSet 222
6.4 DataSet、DataTable、DataColumn、DataRow、UniqueConstraints和ForeigkeyConstraints对象参考 226
6.4.1 DataSet对象的属性 226
6.4.2 DataSet对象的方法 230
6.4.3 DataSet对象的事件 233
6.4.4 DataTable对象的属性 234
6.4.5 DataTable对象的方法 238
6.4.6 DataTable对象的事件 242
6.4.7 DataColumn对象的属性 243
6.4.8 DataRow对象的属性 249
6.4.9 DataRow对象的方法 251
6.4.1 0 UniqueConstraint 257
对象的属性 257
6.4.11 ForeignkeyConstraint 258
对象的属性 258
6.5常见问题 259
第7章处理关系数据 261
7.1.1 联合查询 262
7.1 关系数据访问概述 262
7.1.2单独查询 263
7.1.3层次化的ADO Recordset 264
对象 264
7.1.4 ADO.NET的DataRelation 265
对象 265
7.2在代码中使用DataRelation 266
对象 266
7.2.1 创建DataRelation对象 266
7.2.2查找关系数据 268
7.2.3 使用DataRelation 272
对象验证数据 272
7.2.4 自引用DataRelationship 275
对象 275
7.2.5多对多关系 277
DataRelation对象 280
DataColumn对象中使用 280
7.2.6在基于表达式的 280
7.2.7层叠更改 283
7.2.8 Join查询 284
7.3 在Visual Studio.NET中 285
创建DataRelation对象 285
7.3.1 向强类型DataSet 285
添加DataRelation 285
7.3.2 向一个非类型化DataSet 287
添加DataRelation 287
7.4 DataRelation对象引用 287
7.4.1 DataRelation对象的 287
属性 287
7.5常见问题 290
8.1 使用DataTable对象的搜索和筛选功能 295
8.1.1根据主键值查找行 295
第8章排序、搜索和筛选 295
8.1.2执行更具动态的搜索 297
8.1.3执行通配符搜索 299
8.1.4使用分隔符 299
8.1.5使用附加Select方法 301
8.2 DataView对象 303
8.2.1 DataView对象从 303
DataTable中返回数据 303
8.2.2 DataView对象不是 304
SQL查询 304
8.3在代码中使用DataView对象 304
8.3.1 创建DataView对象 305
8.3.2 使用RowStateFilter 306
属性 306
所有可用数据各行 307
8.3.4 通过DataView检查 307
对象 307
8.3.3 使用DataRowView 307
8.3.5 在DataView中 309
搜索数据 309
8.3.6修改DataRowView 311
对象 311
8.4 在Visual Studio.NET中 312
创建DataView对象 312
8.4.1 在设计器中添加新 312
DataView对象 312
8.4.2设置DataView 313
对象的属性 313
8.5 DataView对象参考 313
8.5.1 DataView对象的属性 313
8.5.2 DataView对象的方法 317
8.5.4 DataRowView对象的 321
属性 321
8.5.3 DataView对象的 321
ListChanged事件 321
8.5.5 DataRowView对象的 323
方法 323
8.6常见问题 324
第9章使用强类型DataSet对象 330
9.1创建强类型DataSet对象 331
9.1.1 困难的方法 331
9.1.2简单的方法 333
9.2使用强类型DataSet对象 336
9.2.1 添加行 336
9.2.2查找行 338
9.2.3 编辑行 339
9.2.4处理空数据 340
9.2.5处理层次数据 341
9.2.6 其他DataSet、DataTable 342
和DataRow特性 342
9.3何时使用强类型DataSet对象 343
9.3.1 软件组件与瑞士军刀 343
9.3.2设计时的优势 344
9.3.3运行时的优势 345
9.3.4其他注意事项 347
9.3.5方法的选择 350
9.4常见问题 350
第10章 向数据库提交更新 353
10.1 有关历史 356
提交更新的缺点 357
10.1.2用ADO Recordset对象 357
更新的好处 357
10.1.1用ADO Recordset提交 357
10.2 用ADO.NET Command对象 358
提交更新 358
10.3 使用ADO.NET DataAdapter 369
对象提交更新 369
10.4手工配置DataAdapter对象 370
10.4.1 绑定参数简介 370
10.4.2用存储过程提交更新 375
10.4.3提供自己的更新逻辑 381
10.5 使用CommandBuilder对象 382
生成更新逻辑 382
10.5.1 CommandBuilder如何 382
生成更新逻辑 382
的优点和缺点 384
10.5.2 使用CommandBuilder 384
10.6使用【数据适配器配置向导】生成更新逻辑 385
10.6.1 检查DataAdapter 386
的结构 386
10.6.2构建更新逻辑的选择 386
10.6.3使用存储过程提交更新 387
10.6.4使用向导的优点和缺点 391
10.7关于更新的其他注意事项 391
10.7.1 开放式并发选项 391
10.7.2使用空值 395
10.7.3 在事务中提交更新 396
10.7.4使用TableMappings 400
集合 400
10.7.5最佳更新方式 403
对象的属性 404
对象的方法 404
10.8.2 OleDbCommandBuilder 404
10.8 OleDbCommandBuilder 404
10.8.1 OleDbCommandBuilder 404
对象参考 404
10.9常见问题 407
第11章 高级更新场景 413
11.1 在提交更新后刷新一行 413
11.1.1 在提交更新后获取为 414
时间戳列新生成的值 414
11.1.2在提交更新后使用 415
成批查询获取数据 415
RowUpdated事件 416
DataAdapter对象的 416
获取数据 416
11.1.3 用输出参数获取新数据 416
11.1.4在提交更新之后用 416
11.1.5时间戳示例应用程序 418
11.2获取新生成的自动递增值 419
11.2.1 使用SQL Server 419
11.2.2使用Access 2000 422
11.2.3使用Oracle序列 423
11.2.4获取自动递增值的 425
示例应用程序 425
11.3使用SQL Server的 426
NOCOUNT设置 426
11.4提交层次化更改 429
11.4.1 提交挂起的插入和删除 429
11.4.2使用自动递增值和 432
关系数据 432
节省带宽 434
11.5分离和重新集中改变 434
11.5.1 用GetChanges方法 434
11.6得体地处理失败的更新尝试 444
11.6.1 事先为冲突做出计划 444
11.6.2通知用户失败 445
11.6.3 提取冲突行的当前内容 447
11.6.4如果第一次没有 448
成功 448
11.6.5冲突示例应用程序 449
11.7使用分布式事务 450
11.7.1 事务协调器和 452
资源管理器 452
11.7.2NET框架中的 452
分布式事务 452
11.7.4构建自己的组件 453
数据库支持 453
11.7.3对分布式事务的 453
11.7.5分布式事务示例 457
应用程序 457
11.7.6使用组件服务的 457
其他好处 457
11.7.7在处理复杂更新方案 457
时使用ADO.NET 457
11.8常见问题 458
第12章使用XML数据 459
12.1建立XML和数据访问 459
之间的桥梁 459
12.2读取和写入XML数据 460
12.2.1 DataSet对象的 460
XML方法 460
12.2.2 GetXml方法 460
的ADO.NET属性 464
12.2.3推断架构 464
12.2.4影响XML文档架构 464
12.2.5缓存更改和XML文档 466
12.3 DataSet+XmlDocument= 468
XmlDataDocument 468
12.3.1 使用XmlData 469
Document对象 469
12.3.2将DataSet作为XML 469
文档访问 469
12.3.3将更新缓存到XML文档 470
12.4从SQL Server 2000中 472
获取XML数据 472
12.4.1 使用SELECT…FOR 472
XML查询 472
XmlDocument 476
将数据装载到 476
12.5 SQL XML.NET数据提供程序 476
12.5.1 使用SqlXmlCommand 476
12.5.2使用SqlXmlAdapter将 477
数据装载到DataSet 477
12.5.3使用模板查询 478
12.5.4使用XPath查询 481
12.5.5 应用XSLT转换 484
12.5.6提交更新 484
12.6一个简单的ADO.NET和 488
XML例子 488
12.7条条大路通罗马 489
12.8 ADO.NET和XML: 490
快乐的一对 490
12.9常见问题 490
的应用程序 495
13.1 用数据绑定快速生成用户界面 495
第Ⅳ部分 495
第13章生成高效的基于Windows 495
用ADO.NET构造高效的应用程序 495
13.1.1 用数据绑定生成用户 496
界面的步骤 496
13.1.2数据绑定小结 518
13.2应用程序设计考虑事项 518
13.2.1 只提取需要的数据 518
13.2.2更新策略 518
13.2.3 连接策略 521
13.2.4使用BLOB数据 523
13.3 常见问题 528
应用程序的出色工具 531
14.1.1 ASP.NET是生成Web 531
14.1 Web应用程序简介 531
第14章生成高效的Web应用程序 531
14.1.2无状态优缺点 532
14.2连接到数据库 532
14.2.1 使用受信任连接 532
14.2.2使用Access数据库 534
14.3在Web页中显示数据 535
14.3.1 使用DataBinder.Eval 535
14.3.2 将DataGrid控件 538
绑定到查询结果 538
14.4在往返行程之间缓存数据 539
14.4.1 无状态方式——不维护 540
状态 540
14.4.2在客户端缓存数据 540
维护状态 543
14.4.3在Web服务器上 543
14.4.4 在数据库中维护状态 545
14.4.5 维护状态的准则 546
14.5 分页 547
14.5.1 Web DataGrid的 548
分页功能 548
数据的查询 551
14.5.3生成返回一页 551
方法的分页功能 551
14.5.2 DataAdapter Fill 551
14.5.4 PagingOptions示例 552
14.6在Web页面中编辑数据 553
14.6.1 用DataGrid简化 553
数据编辑 553
14.6.2 处理DataGrid的 554
Editing事件 554
14.6.3向数据库提交更改 555
14.6.4购物车示例 556
14.7常见问题 557
第V部分 563
附录 563
附录A使用其他NET数据提供程序 563
A.1 SQL Client.NET数据提供程序 563
A.1.1 命名参数与参数标记 563
A.1.2 使用SqlConnection连接 564
到SQLServer数据库 564
A.1.3 使用SqlDataAdapter 565
获取查询结果 565
A.1.4使用SqlCommand和Sql 565
DataReader对象 565
A.1.5 GetSql〈DataType〉方法 567
和SqlTypes命名空间 567
A.1.6调用存储过程 568
A.1.7 获取数据库架构信息 570
A.2 ODBC.NET数据提供程序 571
A.2.1 使用OdbcConnection 571
连接到数据库 571
A.2.2使用参数查询 572
A.2.3 用OdbcDataAdapter 573
获取查询结果 573
A.2.4用OdbcDataReader检查 573
查询的结果 573
A.2.5调用存储过程 575
A.2.6获取数据库架构信息 576
A.3 Oracle Client.NET数据提供程序 576
获取查询结果 577
A.3.2使用参数查询 577
A.3.3用OracleDataAdapter 577
连接Oracle数据库 577
A.3.1 用OracleConnection 577
A.3.4 用OracleDataReader 578
检查查询结果 578
A.3.5 Oracle特定的数据类型 579
A.3.6调用存储过程 580
A.3.7 从Oracle REF游标中 581
提取数据 581
A.3.8 获取数据库架构信息 583
A.4常见的跨提供程序操作问题 584
A.4.1 编写可在提供程序 584
之间移植的代码 584
A.4.2确定正确的NET提供 588
程序数据类型 588
B.1 ADO.NET Ad Hoc Query Tool 591
附录B工具 591
B.1.1 连接到数据库 592
B.1.2添加NET数据提供程序 592
B.1.3执行查询 593
B.1.4查看查询架构信息 593
B.1.5 提交更新 595
B.1.6应用程序设置 595
B.2 ADO.NET DataAdapter Builder 596
指定更新逻辑 597
B.3 ADO.NET Navigation Control 598
B.3.1 在Visual Studio.NET 599
工具箱中添加ADO.NET 599
Navigation控件 599
B.3.2 设置ADO.NET Navigation 599
控件的属性 599
B.3.3 设置ADO.NET Navigation 599
控件的其他属性 599