理解解析ADO.NET 批處理返回值
ADO.NET 批處理更新只是一個用來簡化多個行更新提交的客戶端提供的軟件機制。在任何情況下,每個新行提交總是通過數據源直接命令的正常通道完成的。將運行一個預定義的直接 SQL 命令。從本質上來說,這就是批處理更新。
ADO.NET 批處理更新通過數據適配器對象的 “更新” 方法進行。數據只能以每個表為基礎進行提交。如果您調用 “更新” 時沒有指定表名,則使用 Table 這個默認的表名。如果不存在具有該名稱的表,則會產生異常。#t#
“更新” 首先檢查每個表行的 RowState 屬性,然后為所指定表中的每個插入行、更新行或刪除行準備自定義的 INSERT、UPDATE 或 DELETE 語句。“更新” 方法有幾個超載。它可以采用數據集和數據表提供的對、某個數據表、甚至是一個 DataRow 對象數組。該方法會返回一個整數值,即成功更新的行數。
為了最大限度地減少網絡通信,ADO.NET 批處理通常會對正在操作的數據集的一個子集調用 “更新”。毫無疑問,這個子集只包含當時已修改的行。您可以通過調用數據集的 GetChanges 方法來獲得這樣的子集。
- if (ds.HasChanges())
- {
- DataSet dsdsChanges = ds.GetChanges();
- adapter.Update(dsChanges, "MyTable");
- }
另外,您可以使用 HasChanges 方法檢查數據集是否發生了更改。HasChanges 返回一個布爾值。
ADO.NET 批處理 返回的數據集包含當時已插入、刪除或修改的行。但這里所說的當時是什么時間呢?這正是 ADO.NET 批處理更新比較復雜的一個方面,必須與表行的當前狀態一起處理。