偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

利用適配器解決ADO.NET批處理

開發(fā) 后端
ADO.NET批處理更新通過數(shù)據(jù)適配器對象的 “更新” 方法進行,文章有詳細的介紹,希望對大家有幫助。

ADO.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解ADO.NET批處理了,這里我發(fā)表一下個人理解,和大家討論討論。 在進一步詳細討論 ADO.NET 批處理更新之前,我需要闡明常常會導致某種誤解的批處理更新模型的一個方面。雖然更新和批處理更新在 ADO.NET 內的實際實現(xiàn)方面有著本質的區(qū)別,但它們遵循的是同一個更新模型。更新和批處理更新都是通過直接的并且特定于提供程序的語句來完成的。當然,由于批處理更新通常涉及到更多的行,所以這些語句會被組合為一個批處理調用。

ADO.NET批處理更新會對目標數(shù)據(jù)集的行進行從頭到尾的循環(huán),只要發(fā)現(xiàn)更新的行,就會發(fā)出適當?shù)母旅睿↖NSERT、DELETE 或 UPDATE)。對更新的行進行通信時,將運行一個預定義的直接 SQL 命令。從本質上來說,這就是批處理更新。 
 
這個過程是理所當然的。實際上,如果批處理更新使用完全不同的更新模型,就需要來自數(shù)據(jù)源的特殊支持。(這正是向 SQL Server 2000 提交 XML updategram 時發(fā)生的情況。)批處理更新只是一個用來簡化多個行更新提交的客戶端提供的軟件機制。在任何情況下,每個新行提交總是通過數(shù)據(jù)源直接命令的正常通道完成的。  
 
#T#到目前為止,本文只提及了 SQL 命令,但這些提及的內容都明確表明了 ADO 批處理更新實現(xiàn)和 ADO.NET 批處理更新實現(xiàn)之間的一個重要區(qū)別。在 ADO 中,批處理更新只可能發(fā)生在基于 SQL 的數(shù)據(jù)源上。而在 ADO.NET 中,批處理更新則可能發(fā)生在任何種類的托管提供程序上,其中包括那些不應該通過 SQL 查詢語言公開其數(shù)據(jù)的托管提供程序。現(xiàn)在,我們可以開始討論 ADO.NET 批處理更新編程的關鍵內容了。
 
ADO.NET 批處理更新通過數(shù)據(jù)適配器對象的 “更新” 方法進行。數(shù)據(jù)只能以每個表為基礎進行提交。如果您調用 “更新” 時沒有指定表名,則使用 Table 這個默認的表名。如果不存在具有該名稱的表,則會產(chǎn)生異常?!案隆?首先檢查每個表行的 RowState 屬性,然后為所指定表中的每個插入行、更新行或刪除行準備自定義的 INSERT、UPDATE 或 DELETE 語句。  “更新” 方法有幾個超載。它可以采用數(shù)據(jù)集和數(shù)據(jù)表提供的對、某個數(shù)據(jù)表、甚至是一個 DataRow 對象數(shù)組。該方法會返回一個整數(shù)值,即成功更新的行數(shù)。
 
為了***限度地減少網(wǎng)絡通信,通常會對正在操作的數(shù)據(jù)集的一個子集調用 “更新”。毫無疑問,這個子集只包含當時已修改的行。您可以通過調用數(shù)據(jù)集的 GetChanges 方法來獲得這樣的子集。 

  1. if (ds.HasChanges())   
  2. {   
  3. DataSet dsdsChanges = ds.GetChanges();   
  4. adapter.Update(dsChanges, "MyTable");   
  5. }  


 另外,您可以使用 HasChanges 方法檢查數(shù)據(jù)集是否發(fā)生了更改。HasChanges 返回一個布爾值。 GetChanges 返回的數(shù)據(jù)集包含當時已插入、刪除或修改的行。但這里所說的當時是什么時間呢?這正是 ADO.NET 批處理更新比較復雜的一個方面,必須與表行的當前狀態(tài)一起處理。 行的狀態(tài) “數(shù)據(jù)表” 中的每一行都是通過 DataRow 對象呈現(xiàn)的。DataRow 對象主要是作為父 “數(shù)據(jù)表” 對象的 Rows 集合的一個元素而存在的。

從概念上來看,數(shù)據(jù)庫行固有地鏈接到了某個給定表的結構。就是由于這個原因,ADO.NET 中的 DataRow 類不提供公用構造函數(shù)。創(chuàng)建新 DataRow 對象的唯一方式是借助于對 “數(shù)據(jù)表” 對象的某個實時實例調用名為 NewRow 的方法。剛剛創(chuàng)建好的行還不屬于父表的 Rows 集合,但該行與此集合的關系決定了該行的狀態(tài)。下表顯示了 RowState 屬性的一些可取值。這些值組合在了 DataRowState 枚舉中。

責任編輯:田樹 來源: 博客
相關推薦

2009-10-29 11:18:47

ADO.NET SQL

2009-12-23 11:01:50

ADO.NET 批處理

2009-12-23 10:34:15

ADO.NET 批處理

2010-01-04 15:46:03

ADO.NET 批處理

2009-12-21 13:45:17

ADO.NET安裝

2009-11-13 11:08:04

ADO.NET Row

2009-12-31 16:09:22

ADO與ADO.NET

2009-12-22 14:15:08

ADO.Net處理數(shù)據(jù)

2009-12-30 16:05:20

ADO.NET實例

2009-12-23 11:25:30

ADO.NET處理

2009-12-28 15:11:36

ADO.NET專家

2010-01-04 13:16:31

ADO.NET命令

2009-11-03 15:47:10

ADO.NET數(shù)據(jù)異步

2009-12-21 16:02:48

ADO.NET命令

2009-11-03 16:37:10

2009-09-14 13:37:25

LINQ ADO.NE

2011-05-20 11:31:07

ADO.NET

2009-11-13 17:01:07

ADO.NET事務處理

2009-11-11 10:06:12

ADO.NET設計

2009-12-30 16:50:26

ADO.NET事務
點贊
收藏

51CTO技術棧公眾號