国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

簡述DbDataAdapter.update 方法

2024-07-21 02:23:35
字體:
來源:轉載
供稿:網友
簡述dbdataadapter.update 方法





當應用程序調用 update 方法時,dbdataadapter 根據 dataset 中配置的索引順序為每一行檢查 rowstate 屬性,并迭代執行所需的 insert、update 或 delete 語句。例如,由于 datatable 中行的排序,update 可能先執行一個 delete 語句,接著執行一個 insert 語句,然后再執行另一個 delete 語句。

應注意,這些語句不是作為批處理進程執行的;每一行都是單獨更新的。在必須控制語句類型順序的情況下(例如,insert 在 update 之前),應用程序可以調用 getchanges 方法。

如果未指定 insert、update 或 delete 語句,update 方法會生成異常。但是,如果設置 .net framework 數據提供程序的 selectcommand 屬性,則可以創建 sqlcommandbuilder 或 oledbcommandbuilder 對象來為單個表更新自動生成 sql 語句。然后,commandbuilder 將生成其他任何未設置的 sql 語句。此生成邏輯要求 dataset 中存在鍵列信息。

update 方法支持以下情況:dataset 包含多個 datatable 對象,而這些對象的名稱只有大小寫不同。當 dataset 中有多個表具有相同的名稱但大小寫不同時,update 執行區分大小寫的比較以查找相應的表,如果不存在完全匹配的表,就會生成一個異常。下面的代碼闡釋該行為。

dataset ds = new dataset();
ds.tables.add("aaa");
ds.tables.add("aaa");
adapter.update(ds, "aaa"); // updates "aaa", which already exists in the dataset.
adapter.update(ds, "aaa"); // updates "aaa", which already exists in the dataset.
adapter.update(ds, "aaa"); // results in an exception.
如果調用 update 并且 dataset 只包含一個其名稱只有大小寫不同的 datatable,則更新該 datatable。在這種情況下,比較不區分大小寫。下面的 c# 代碼闡釋該行為。

dataset dataset = new dataset();
dataset.tables.add("aaa");
adapter.update(dataset, "aaa"); // updates table "aaa" because only one similarly named table is in the dataset.


update 方法在執行更新之前從第一個映射列出的表中檢索行。然后,update 使用 updatedrowsource 屬性的值刷新該行。忽略返回的任何其他行。



updatedrowsource屬性 獲取或設置命令結果在由 dbdataadapter 的 update 方法使用時如何應用于 datarow。默認的 updaterowsource 值為 both,除非自動生成該命令(如 oledbcommandbuilder 這樣的情況),這時默認值為 none。在其他非自動生成命令情況下,不管使用代碼還是通過查詢設計器,通過設置命令的commandtext屬性創建的命令對象都是默認值為both。



成員名稱
說明

both
將輸出參數和第一個返回行都映射到 dataset 中的已更改的行。

firstreturnedrecord
將第一個返回行中的數據映射到 dataset 中的已更改的行。

none
忽略任何返回的參數或行。

outputparameters
將輸出參數映射到 dataset 中的已更改的行。





在將任何數據加載回 dataset 之后,將引發 onrowupdated 事件,從而允許用戶檢查經協調的 dataset 行以及該命令返回的任何輸出參數。在對一行成功進行更新之后,將接受對該行的更改。

當使用 update 時,執行的順序如下:

1. 將 datarow 中的值移至參數值。

2. 引發 onrowupdating 事件。

3. 執行命令。

4. 如果該命令設置為 firstreturnedrecord,返回的第一項結果將放置在 datarow 中。

5. 如果存在輸出參數,它們將被放在 datarow 中。

6. 引發 onrowupdated 事件。

7. 調用 acceptchanges。

與 dbdataadapter 關聯的每個命令通常都有一個與其關聯的參數集合。參數通過 .net framework 數據提供程序的 parameter 類的 sourcecolumn 和 sourceversion 屬性映射到當前行。sourcecolumn 引用 datatable 列,而 dbdataadapter 引用該列來獲取當前行的參數值。

sourcecolumn 在應用任何表映射之前將引用未映射的列名。如果 sourcecolumn 引用一個不存在的列,則采取的操作取決于以下 missingmappingaction 值之一。

n missingmappingaction.passthrough 如果不存在任何映射,則使用 dataset 中的源列名和表名。

n missingmappingaction.ignore 生成 systemexception。當顯式設置映射時,缺少輸入參數的映射通常是由于出錯所致。

n missingmappingaction.error 生成 systemexception。

sourcecolumn 屬性還用于將輸出或輸入/輸出參數的值映射回 dataset。如果它引用一個不存在的列,則會生成異常。

.net framework 數據提供程序的 parameter 類的 sourceversion 屬性確定使用列值的哪個版本:original、current 還是 proposed。該功能通常用于在 update 語句的 where 子句中包含初始值,以檢查開放式并發沖突。

注意 如果在更新行時出錯,則會引發異常并停止執行更新。若要在遇到錯誤時繼續更新操作而不生成異常,請在調用 update 之前將 continueupdateonerror 屬性設置為 true。您還可以在 sqldataadapter 或 oledbdataadapter 的 rowupdated 事件中逐行對錯誤作出響應。若要在 rowupdated 事件中繼續更新操作而不生成異常,請將 rowupdatedeventargs 的 status 屬性設置為 continue。
上一篇:理解UDDI

下一篇:給DataGrid加上右鍵菜單

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成武县| 武强县| 建湖县| 吕梁市| SHOW| 东山县| 湛江市| 资溪县| 信宜市| 昌江| 七台河市| 明水县| 民权县| 衡山县| 泰宁县| 舟山市| 从化市| 安塞县| 泊头市| 永和县| 永仁县| 舟曲县| 溧阳市| 通州区| 瓮安县| 常德市| 咸宁市| 临沭县| 淮安市| 二连浩特市| 扎赉特旗| 万州区| 霞浦县| 新宁县| 台南市| 吉木萨尔县| 九寨沟县| 临沂市| 西宁市| 缙云县| 莱西市|