第I部分 ADO.NET 2.0
基礎知識
第1章 從ADO向ADO.NET移植 3
1.1 數(shù)據(jù)訪問的新方式 4
1.1.1 System.Data命名空間 4
1.1.2 ADO.NET數(shù)據(jù)提供者 6
1.2 ADO.NET的基本數(shù)據(jù)對象 6
1.2.1 用SqlClient創(chuàng)建基本
ADO.NET數(shù)據(jù)對象 8
1.2.2 對多表更新應用事務 15
1.2.3 使用OleDb、SqlXml和Odbc
成員類 17
1.2.4 使用類型化DataReader數(shù)據(jù)
和SqlResultSet數(shù)據(jù) 21
1.3 ADO.NET的類型化DataSet
對象 22
1.3.1 通過SQL Server數(shù)據(jù)源添加
類型化DataSet 24
1.3.2 添加DataGridView和
BindingNavigator控件 28
1.3.3 持久化和重新打開DataSet 30
1.3.4 將DataViewGrid更改為
Details窗體 31
1.3.5 添加相關的DataBound
控件 32
1.4 小結 34
第2章 ADO.NET 2.0新功能介紹 35
2.1 使用新的ADO.NET 2.0運行
時Windows窗體對象 35
2.1.1 用DbProviderFactories創(chuàng)建
數(shù)據(jù)庫不明確的項目 36
2.1.2 檢索基表架構 39
2.1.3 校驗有效的SQL Server實
例和ADO.NET 2.0數(shù)據(jù)
提供者 41
2.1.4 利用SqlBilkCopy對象對
SQL Server表進行批量
插入 42
2.1.5 SQL Server連接統(tǒng)計信息 45
2.1.6 異步執(zhí)行SqlCommands 47
2.1.7 創(chuàng)建單獨的DataTable 56
2.1.8 用Nullable類型支持
DBNull值 60
2.2 使用ADO.NET 2.0的新持久
性Windows窗體對象 64
2.2.1 ADO.NET 1.x與2.0的數(shù)據(jù)
設計器比較 64
2.2.2 向工具箱添加沒顯示的
ADO.NET控件 66
2.2.3 將1.x項目升級為ADO.NET
2.0組件 67
2.2.4 添加多級子窗體 67
2.2.5 參數(shù)化MasterDetailsForm 69
2.2.6 批量多次更新 71
2.3 用ReportViewer控件設計和
顯示報表 72
2.4 小結 74
第3章 對以數(shù)據(jù)為中心的項目采用
最佳實踐 77
3.1 建立體系結構的最佳實踐 78
3.2 為項目確定模式 80
3.2.1 使用Microsoft .NET的企業(yè)
解決方案模式 81
3.2.2 數(shù)據(jù)模式 81
3.2.3 分布式系統(tǒng)模式 82
3.2.4 集成模式 82
3.3 應用程序塊庫 83
3.3.1 數(shù)據(jù)訪問應用程序塊 84
3.3.2 DataAccessQuickStart
客戶端 88
3.4 遵循設計指南 90
3.4.1 .NET數(shù)據(jù)訪問體系結構
指南 90
3.4.2 提高.NET應用程序的性能
和可伸縮性 91
3.4.3 設計數(shù)據(jù)層組件并在層間
傳遞數(shù)據(jù) 91
3.5 類庫設計指南 96
3.5.1 命名指南 96
3.5.2 類成員使用指南 97
3.6 面向服務的架構 98
3.6.1 面向服務的架構 98
3.6.2 用Web服務實現(xiàn)SOA 99
3.6.3 保證完全互操作的Web
服務 100
3.7 用FxCop驗證項目代碼 104
3.8 自動完成測試驅動的開發(fā) 106
3.8.1 向VS 2005解決方案添加
單元測試項目 106
3.8.2 編輯和運行向導生成的
測試 108
3.9 運行SQL Server 2000最佳
實踐分析器 109
3.10 對ADO.NET 2.0項目采用
特殊最佳實踐 111
3.10.1 對存儲池數(shù)據(jù)庫連接采用
相同連接字符串 111
3.10.2 運行SQL Server分析器來
檢驗SQL和RPC查詢 112
3.10.3 避免添加運行時
CommandBuilder實例 113
3.10.4 用存儲過程代替SQL批量
查詢 114
3.10.5 為不需要的參數(shù)添加
默認值 114
3.10.6 利用sp_executesql和命名
參數(shù)重新使用緩存的查詢
計劃 114
3.10.7 向開放式并發(fā)控件添加
timestamp列 115
3.10.8 在并發(fā)測試中檢驗所有
關聯(lián)記錄 118
3.10.9 通過批量更新減少服務器
往返行程 118
3.10.10 利用客戶端驗證避免
SqlExceptions 118
3.11 小結 119
第II部分 Windows窗體和控
件中的數(shù)據(jù)綁定
第4章 對TableAdapters、Binding
Sources和DataGridView
編程 123
4.1 設計基本的客戶-訂單-訂單
詳細窗體 123
4.1.1 利用參數(shù)化查詢減小
DataSet的尺寸 124
4.1.2 創(chuàng)建數(shù)據(jù)源并添加控件 125
4.1.3 為各數(shù)據(jù)表添加FillBy
方法 126
4.1.4 更改自動生成的代碼來滿足
控件的要求 128
4.1.5 用CustomerID值填充
組合框 129
4.1.6 清除UI和代碼 130
4.2 格式化并添加DataGrid
View列 131
4.2.1 設置OrdersDataGridView
列的格式 131
4.2.2 格式化Order_DetailsDataGrid
View并添加計算列 132
4.3 為新記錄提供默認值 134
4.3.1 添加默認的訂單記錄值 134
4.3.2 添加默認的詳細記錄值 135
4.4 處理DataErrors事件 136
4.5 流線型Heads-down數(shù)據(jù)
輸入 137
4.6 將UI移植到選項卡式窗
體上 139
4.6.1 測試OrdersByCustomersV3
項目 140
4.6.2 用代碼添加行時修改丟失的
默認值 141
4.6.3 在第二個選項卡頁面編輯選
擇的DataGridView記錄 142
4.7 為主鍵值創(chuàng)建和綁定查詢
列表 143
4.7.1 創(chuàng)建非類型化查詢DataSet
及其DataTables 144
4.7.2 填充cboCustomerID
組合框 146
4.7.3 用組合框代替DataGridView
文本框 146
4.7.4 為組合框與文本框建立
關聯(lián) 149
4.8 添加設置附加值的組合框 151
4.8.1 創(chuàng)建和綁定根據(jù)ProductName
排序的DataView 151
4.8.2 測試復制性并更新
UnitPrice列 152
4.9 為新客戶輸入添加查詢表行 155
4.9.1 添加和綁定CustomerID
BindingSource 155
4.9.2 用DataRowView測試
重復性 156
4.10 對編輯應用業(yè)務規(guī)則 157
4.11 將更改保存到基表 159
4.11.1 維護引用的完整性 159
4.11.2 創(chuàng)建并測試UpdateBase
Tables函數(shù) 160
4.12 小結 168
第5章 添加數(shù)據(jù)驗證和并發(fā)管理 171
5.1 驗證數(shù)據(jù)輸入 173
5.1.1 驗證文本框 173
5.1.2 驗證DataGridViews 174
5.1.3 發(fā)現(xiàn)輸入中的主鍵約束
沖突 176
5.1.4 驗證默認值 177
5.2 管理并發(fā)沖突 178
5.2.1 ADO.NET 2.0并發(fā)控制和
事務變更 179
5.2.2 并發(fā)控制戰(zhàn)略 181
5.2.3 并發(fā)管理的“鏈接丟失” 181
5.2.4 預測基于值的主鍵約束
沖突 189
5.3 合理處理并發(fā)錯誤 191
5.3.1 從服務器上獲取當前數(shù)據(jù) 192
5.3.2 檢索并比較服務器和客戶端
單元值 194
5.4 容納非連接用戶 198
5.4.1 創(chuàng)建和管理脫機DataSet 198
5.4.2 處理多個父記錄 200
5.5 小結 201
第6章 高級DataSet技術應用 203
6.1 對DataSet更新應用事務 203
6.2 對DataTable選擇命令添加
聯(lián)接 211
6.2.1 向SelectCommand添加
聯(lián)接 211
6.2.2 向DataGridView添加聯(lián)接
的列 213
6.2.3 提供默認值并更新只讀列 213
6.3 通過減少DataSet的尺寸來
提高性能 215
6.3.1 由TOP n查詢返回的
限制行 216
6.3.2 為TableAdapters添加
部分類 216
6.4 在DataGridViews中使用
圖像 217
6.4.1 向DataGridViews添加
圖像列 218
6.4.2 填充DataGridView圖像 219
6.5 用DataSet和DataGridViews
編輯XML文檔 222
6.5.1 利用已有的XML架構
生成DataSet 223
6.5.2 推斷一個XML架構來生成
DataSet 236
6.5.3 通過XML數(shù)據(jù)源創(chuàng)建編輯
窗體 237
6.6 通過架構生成可序列化類 241
6.6.1 用可序列化類創(chuàng)建數(shù)據(jù)源 243
6.6.2 用泛型BindingList集合提高
編輯功能 245
6.7 小結 248
第III部分 ASP.NET 2.0中的
數(shù)據(jù)綁定
第7章 ASP.NET 2.0的DataSources
和綁定控件 251
7.1 ASP.NET 2.0的新功能 252
7.1.1 ASP.NET 2.0的編譯模型 255
7.1.2 ASP.NET 2.0的特殊
文件夾 257
7.1.3 ASP.NET 2.0的新數(shù)據(jù)
控件 257
7.2 DataSource控件 258
7.3 DataList控件 259
7.3.1 用于綁定控件的
SqlDataSources控件 260
7.3.2 控件屬性 264
7.3.3 數(shù)據(jù)綁定模板與數(shù)據(jù)
格式化 265
7.3.4 綁定控件值的DataSource
WHERE約束 267
7.3.5 編輯DataLists中的項 270
7.4 FormView控件 272
7.4.1 對DataSource分頁 272
7.4.2 用列專用的文本代替空值 273
7.4.3 編輯、添加和刪除記錄 274
7.4.4 添加Command按鈕 275
7.5 GridView控件 277
7.5.1 將BoundField轉換為
EditItemTemplate字段 278
7.5.2 用DropDownList代替
TextBoxes,以進行編輯 280
7.5.3 用ImageField設計
GridView 281
7.5.4 縮放圖像渲染 284
7.6 DetailsView控件 285
7.6.1 使子表GridView與
DetailsView同步 286
7.6.2 使復合主鍵值可編輯 286
7.6.3 賦默認值并處理更新和
插入錯誤 287
7.6.4 用QueryString將
DetailsView頁面鏈接到
GridView頁面 288
7.7 小結 289
第8章 高級ASP.NET 2.0數(shù)據(jù)技術
應用 291
8.1 在數(shù)據(jù)綁定控件中驗證輸入 291
8.1.1 ASP.NET 2.0驗證控件 292
8.1.2 新增的ValidationGroup
屬性 293
8.1.3 共享的其他驗證屬性 293
8.2 驗證GridView編輯 294
8.2.1 向GridView控件添加所
需要的字段驗證 295
8.2.2 用RegularExpressionValidator
驗證CustomerID輸入 296
8.2.3 用RangeValidator測試
EmployeeID值 297
8.2.4 對數(shù)據(jù)輸入執(zhí)行
RangeValidator和
RegularExpressionValidator 297
8.2.5 用CompareValidator防止
不合理的輸入 299
8.2.6 添加CustomValidator控件 299
8.2.7 提供驗證概述消息 302
8.3 驗證DetailsView控件 303
8.3.1 在Web 服務器上驗證
ProductID編輯 303
8.3.2 在客戶端測試重復的
ProductID值 304
8.4 用ObjectDataSources代替
SqlDataSources 305
8.4.1 DataTables的
ObjectDataSources控件 306
8.4.2 來自類型化DataSet DALC
的ObjectDataSources 313
8.4.3 自定義業(yè)務對象的
ObjectDataSources 315
8.5 用XmlDataSource讀XML
文件 322
8.5.1 通過XML文檔創(chuàng)建
XmlDataSources 322
8.5.2 用Orders.xml填充GridView
控件 324
8.5.3 用XmlDataSource設計
Repeater控件 325
8.5.4 用表格式數(shù)據(jù)填充
TreeView 327
8.6 跟蹤Web頁面來比較
DataSource控件的性能 329
8.7 向IIS部署建立的Web站點 330
8.7.1 為自己的站點創(chuàng)建虛擬
目錄 331
8.7.2 將Web站點復制到虛擬目錄
文件夾 331
8.7.3 發(fā)布預編譯Web站點 333
8.8 小結 334
第9章 發(fā)布數(shù)據(jù)驅動的Web服務 335
9.1 Web服務開發(fā)戰(zhàn)略 336
9.1.1 事務 336
9.1.2 DataSet控件 336
9.1.3 自定義業(yè)務對象 337
9.1.4 多個WebMethod和版本
登記 337
9.1.5 Web服務的安全性 338
9.2 ASP.NET 2.0 Web服務編程 339
9.2.1 Web Service幫助頁面與
WSDL文檔 340
9.2.2 Web服務部署 345
9.2.3 Web服務客戶端和代理 345
9.3 創(chuàng)建并部署簡單數(shù)據(jù)Web
服務 350
9.3.1 Web服務連接字符串 350
9.3.2 添加通用過程來返回
類型化DataSet 352
9.3.3 添加WebMethod來定義并
返回DataSet 354
9.4 向Web服務客戶端添加
DataGridViews 355
9.5 更新Web服務DataSet 357
9.6 用自定義業(yè)務對象代替
DataSet 359
9.6.1 業(yè)務對象Web服務 359
9.6.2 向DataGridViews綁定
對象數(shù)組 365
9.6.3 創(chuàng)建ASP.NET業(yè)務對象Web
服務客戶端 371
9.7 小結 372
第IV部分 SQL Server 2005
和ADO.NET 2.0
第10章 從SQL Server 2000升級
到2005 375
10.1 SQL Server 2005的版本 375
10.1.1 Express Edition 376
10.1.2 Developer Edition 377
10.1.3 Workgroup Edition 377
10.1.4 Standard Edition 378
10.1.5 Enterprise Edition 378
10.1.6 Mobile Edition 378
10.2 SQL Server 2005新功能
簡介 378
10.2.1 新的或升級的管理工具 379
10.2.2 報表服務 383
10.2.3 CLR集成 384
10.2.4 xml數(shù)據(jù)類型和Xquery
實現(xiàn) 384
10.2.5 SQL Server 2005的Xquery
語法、SQL本地客戶端 385
10.2.6 多活動結果集(MARS) 386
10.2.7 數(shù)據(jù)有效性和可靠性的
增強 387
10.2.8 T-SQL和數(shù)據(jù)庫引擎的
增強 387
10.2.9 服務代理 395
10.2.10 通知服務 399
10.2.11 查詢通知 400
10.2.12 數(shù)據(jù)庫郵件 400
10.2.13 SQL Server本地SOAP
Web服務 401
10.3 自定義FOR XML查詢 403
10.3.1 用FOR XML RAW查詢
添加根元素和嵌套的XML
架構 403
10.3.2 采用FOR XML PATH
架構的微調文檔結構 406
10.4 分析PIVOT和UNPIVOT
操作符 411
10.4.1 創(chuàng)建源表 412
10.4.2 使用PIVOT操作符 412
10.4.3 用公共表表達式代替
源表 414
10.4.4 非數(shù)據(jù)透視交叉表報表 415
10.5 處理查詢通知 416
10.5.1 添加SqlDependency
通知 417
10.5.2 創(chuàng)建SqlNotificationRequest
對象和訂閱 420
10.5.3 用數(shù)據(jù)庫郵件自動進行
重排序處理 423
10.6 消耗SQL Server本地Web
服務 425
10.7 小結 427
第11章 創(chuàng)建SQL Server項目 429
11.1 SQL Server項目簡介 429
11.1.1 實現(xiàn)CLR集成的命令 430
11.1.2 用于SQL Server項目的
屬性修飾 430
11.1.3 Visual Studio 2005 SQL
Server項目模板 430
11.2 SqlServerProjectCLR示例
項目 431
11.2.1 用于SQL Server對象的
代碼 432
11.2.2 測試腳本 437
11.2.3 創(chuàng)建程序集指令 438
11.2.4 創(chuàng)建ObjectType指令 439
11.2.5 拋棄SQL/CLR對象 442
11.2.6 調試SQL Server項目 442
11.3 設計SQL/CLR存儲過程 444
11.3.1 返回依賴于內容的
SqlDataRecords 444
11.3.2 用XmlWriter生成XML
文檔 447
11.3.3 對項目產品銷售進行線性
回歸分析 456
11.4 創(chuàng)建自定義類型 463
11.4.1 用于結構和類的Native
格式的UDT代碼 464
11.4.2 自定義格式的UDT類
代碼 467
11.4.3 簡單值類型UDT 468
11.5 對表添加UDT列 471
11.5.1 利用UDT列顯示表行 472
11.5.2 用SqlDataReader返回
UDT值 473
11.6 使用復雜的自定義格式
的UDT 474
11.6.1 AddressBasic UDT 475
11.6.2 驗證地址UDT的方法 478
11.6.3 用WHERE約束和ORDER
BY子句測試地址UDT 479
11.6.4 利用UDT查詢從其他
字段或表訪問數(shù)據(jù) 480
11.6.5 用XmlTextWriter生成
格式規(guī)范的XML 481
11.7 小結 483
第12章 分析xml數(shù)據(jù)類型 485
12.1 選擇合理的xml數(shù)據(jù)模型 486
12.1.1 非類型化xml列 487
12.1.2 類型化xml列 490
12.1.3 索引式xml列 494
12.2 探究AdventureWorks的
xml列 497
12.3 執(zhí)行XQuery表達式 499
12.3.1 用于xml列的XQuery
方法 500
12.3.2 FLWOR XQuery表達式 506
12.3.3 通過代碼執(zhí)行XQuery
表達式 511
12.4 數(shù)據(jù)模型選擇對性能的
影響 512