第1章 ADO.NET概述 1
1.1 什么是ADO.NET 2
1.2 ADO的不足之處 2
1.3 ADO.NET中的重要對象 3
1.3.1 連接對象 3
1.3.2 非連接對象 4
1.4 .NET數據提供程序 6
1.4.1 使用ProviderBase模型 8
1.4.2 第三方.NET數據提供程序 11
1.5 System.Data.Design命名空間 12
1.6 小結 12
第2章 ADO.NET對象模型 13
2.1 本章可用作參考 13
2.2 ADO.NET鳥瞰 14
2.3 建立連接:DbConnection 14
2.4 執(zhí)行命令:DbCommand和DbTransaction 16
2.5 保存非連接數據:DataSet 19
2.6 獲取數據:DataReader和DataAdapter 21
2.6.1 基于連接的方式獲取數據:DbDataReader 21
2.6.2 連接部分和非連接部分之間的橋梁:DbDataAdapter 22
2.7 ADO.NET中的異常 23
2.8 小結 27
第3章 ADO.NET Hello World程序 28
3.1 構建Hello World程序的數據源 28
3.2 創(chuàng)建數據驅動的應用程序:拖放的方法 29
3.2.1 ASP.NET 2.0中的拖放 29
3.2.2 Windows窗口應用程序中的拖放 35
3.3 混合方法:寫一些代碼,用一些拖放 39
3.4 數據驅動的應用程序:自己編寫代碼的方法 42
3.5 小結 45
第4章 連接到數據源 46
4.1 連接的能力 46
4.1.1 創(chuàng)建連接對象 47
4.1.2 生成提供程序特定的連接串 50
4.1.3 編寫連接串的簡便方法 52
4.1.4 增強連接串的安全性 54
4.2 公共行為:IDbConnection 57
4.3 公共邏輯:DbConnection 59
4.4 高要求的應用程序 59
4.5 連接池 60
4.5.1 工作原理 62
4.5.2 確定合適的池大小 63
4.5.3 崩潰的連接池 64
4.6 關閉連接:良好的應用程序設計 64
4.7 小結 65
第5章 在連接模式下獲取數據 66
5.1 與數據源的通信 66
5.2 獲取單個值 67
5.2.1 要用哪個數據庫執(zhí)行命令 67
5.2.2 要執(zhí)行什么 69
5.2.3 執(zhí)行命令以獲取結果 70
5.3 獲取結果集 71
5.4 為存儲而查詢結果集 76
5.5 異步查詢大結果集 78
5.6 從數據庫查詢多個結果集 82
5.7 面向對象與關系表示 85
5.7.1 在數據庫中存儲對象 85
5.7.2 使用SQL查詢UDT數據 90
5.7.3 以連接模式獲取UDT數據 91
5.7.4 實際使用UDT 92
5.8 小結 92
第6章 DataSet 93
6.1 非連接模型的案例 93
6.2 DataSet對象模型 95
6.2.1 DataTable 96
6.2.2 DataColumn 97
6.2.3 DataRow 98
6.2.4 Constraint 99
6.2.5 設置主鍵:PrimaryKey屬性 100
6.2.6 動態(tài)構建DataTable 100
6.2.7 DataTable的事件 103
6.2.8 DataTable事件的實際用法 104
6.3 關系數據 108
6.4 把所有內容放到一起 111
6.5 作為數據傳輸對象的DataSet 117
6.6 強類型DataSet:概述 122
6.6.1 XSD概要 123
6.6.2 DataSet架構 131
6.6.3 構建強類型DataSet 139
6.6.4 類型化DataSet的性能 147
6.6.5 注釋類型化DataSet 147
6.7 小結 153
第7章 獲取數據:DataAdapter 154
7.1 什么是DataAdaper 154
7.2 使用DataAdapter 156
7.2.1 構建數據源 156
7.2.2 查詢數據表:指向并且點擊 157
7.2.3 查詢數據表:編寫代碼 160
7.2.4 填充DataSet:不止一個數據表 164
7.2.5 查詢數據庫架構 169
7.3 映射 175
7.3.1 使用SQL的AS關鍵字 175
7.3.2 ADO.NET的映射機制 177
7.4 小結 182
第8章 排序、獲取和過濾 183
8.1 構建數據源 184
8.2 處理DataTable 185
8.2.1 查找行 186
8.2.2 選定多行記錄 188
8.2.3 表達式:動態(tài)計算列 190
8.2.4 執(zhí)行聚合計算 193
8.3 使用DataRelation對象 195
8.4 使用DataView對象 199
8.5 XML與非連接數據的交互 206
8.6 小結 209
第9章 更新數據 210
9.1 更新數據表:簡單拖放方法 211
9.2 使用命令構建器對象 224
9.3 DataRow中的狀態(tài)管理以及在更新數據時狀態(tài)管理的使用 227
9.4 移動大量的數據:SqlBulkCopy 236
9.5 編輯非連接數據 238
9.5.1 添加新行 238
9.5.2 修改現(xiàn)存行記錄 239
9.5.3 刪除現(xiàn)存行記錄 240
9.6 實際的例子 242
9.7 優(yōu)化應用程序:GetChanges和Merge 252
9.7.1 合并情況1:相同表結構,無主鍵 258
9.7.2 合并情況2:相同表結構,有主鍵 259
9.7.3 合并情況3:公共列,無主鍵 261
9.7.4 合并情況4:公共列,有主鍵 262
9.7.5 合并情況5:完全不同的表結構 263
9.7.6 合并具有不同架構的兩個DataSet/DataTable 265
9.8 使用映射名稱更新記錄 266
9.9 小結 273
第10章 更新數據:高級進階 275
10.1 沖突檢測和并發(fā)解決 276
10.1.1 預防沖突:交通信號燈 276
10.1.2 處理沖突:事故發(fā)生后再搶救 277
10.2 實現(xiàn)并發(fā):實踐所關心的內容 284
10.2.1 Null值 284
10.2.2 所影響的行數和觸發(fā)器 285
10.2.3 更新多行記錄 285
10.3 處理層次結構數據 286
10.3.1 插入層次結構的數據 289
10.3.2 更新層次化數據 297
10.3.3 刪除層次化數據 297
10.3.4 所有的操作集中到一起:保存層次化數據 298
10.3.5 代碼不能用 301
10.4 層次化更新:結論 302
10.5 小結 302
第11章 事務 304
11.1 什么是事務 305
11.1.1 ACID屬性 305
11.1.2 數據庫事務 306
11.1.3 事務詞匯表 307
11.2 ADO.NET的事務支持 307
11.3 編寫事務性數據庫應用程序 310
11.3.1 實現(xiàn)事務 311
11.3.2 考察隔離級別的效果 317
11.3.3 MARS 324
11.3.4 MARS和事務 327
11.4 單數據庫的高級技術 331
11.4.1 保存點 331
11.4.2 嵌套事務 334
11.4.3 與DataSet和DataAdapter一起使用事務 334
11.5 分布式事務 337
11.5.1 分布式事務中的關鍵方:RM和DTC 337
11.5.2 兩階段提交 338
11.5.3 實現(xiàn)分布式事務:.NET 1.1的方法 338
11.5.4 實現(xiàn)分布式事務:.NET 2.0的方法 342
11.5.5 可提升登記:簡單基礎 345
11.5.6 System.Transactions:手動登記和多線程環(huán)境 347
11.6 明智地使用事務 351
11.6.1 事務和性能 352
11.6.2 事務的默認行為 352
11.6.3 事務和用戶確認 352
11.6.4 同時發(fā)生的ADO.NET和RDBMS事務 353
11.7 小結 353
第12章 XML和ADO.NET 354
12.1 SQL Server本機XML支持 354
12.2 FOR XML 355
12.2.1 FOR XML查詢:概要 356
12.2.2 FOR XML的可選參數 359
12.2.3 FOR XML RAW 360
12.2.4 FOR XML AUTO 360
12.2.5 FOR XML EXPLICIT 362
12.2.6 SQL Server 2005和FOR XML PATH 371
12.2.7 在ADO.NET中使用FOR XML查詢 373
12.3 OPENXML 376
12.4 SQL Server 2005獨有的XML數據類型 381
12.5 利用SQL Server的XML功能:SQLXML 384
12.5.1 SQLXML和ADO.NET 384
12.5.2 SQLXML對象模型 385
12.6 小結 396
第13章 SQL Server中的CLR 397
13.1 SQLCLR的正確使用 398
13.2 運行本章例子所需軟件 400
13.3 手動編寫UDF 401
13.4 SQL Server項目的UDF 403
13.5 調試SQLCLR代碼 406
13.6 編寫TVF:表值函數 408
13.7 創(chuàng)建聚合函數 419
13.8 編寫SQLCLR存儲過程 425
13.8.1 上下文連接 425
13.8.2 SQLCLR中的SqlTransaction 434
13.9 在SQLCLR觸發(fā)器中使用事務 435
13.10 在SQLCLR內使用非上下文連接 437
13.11 小結 440
第14章 ADO.NET最佳實踐 441
14.1 了解你的系統(tǒng)需求 441
14.2 為正確的工作選擇正確的工具 442
14.2.1 DataReader或DataSet/ DataAdapter 443
14.2.2 保持連接打開:連接池 444
14.2.3 DataSet或強類型DataSet 444
14.2.4 強類型或非強類型?DataSet與業(yè)務對象 445
14.2.5 T-SQL與SQLCLR以及擴展存儲過程(XP) 447
14.2.6 事務,到處是事務:選擇哪種事務 448
14.3 重要規(guī)則 449
14.3.1 實現(xiàn)數據層 449
14.3.2 關閉連接 449
14.3.3 網絡延遲 451
14.3.4 復雜的層次化DataSet 451
14.3.5 緩存數據 452
14.4 小結 453