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

首頁 > 編程 > .NET > 正文

ADO.NET入門(5)

2024-07-10 13:03:32
字體:
來源:轉載
供稿:網友
,歡迎訪問網頁設計愛好者web開發。5.更新數據

  web程序通常利用無程式語句或者通過參數代存儲過程來更新數據.但是,當遇見脫線的數據時,你也許希望利用內置服務來更新所有需要修訂的記錄.為完成這一工作.ado提供了成批的更新機制.

  updatebatch 方法用于把保存在副本緩沖中的 recordset 更改發送到服務器,以更新數據源。它采用開放式鎖定,允許所有掛起的本地更改。它還在單個操作中把所有更改傳送到數據源。僅當更改提交后數據源鎖定要更改的記錄時,才會出現開放式鎖定。開放式鎖定使兩個用戶可以同時訪問同一個記錄,但一個用戶輸入的更改很快會被另一用戶所覆蓋。當然,這種方式要求數據源能夠檢測和防止數據沖突。還要求整個數據源比較穩定,不會發生頻繁的更改。否則,不難想象協調費用將很快超過替代嚴格鎖定所帶來的節約。事實上,使用 updatebatch 方法,在任何更改失敗時都會返回一個錯誤。然后,您可以通過 errors 集合和 error 對象來訪問該錯誤。

  要理解 ado.net 模型為什么是更新數據的更強大的工具,理解 ado 中開放式鎖定的工作原理是非常關鍵的。在 ado 代碼中,您無法控制調用 updatebatch 之后所發生的一切。也就是說,更新是在服務器上通過滾動已更改的行,然后比較原始值和數據源中對應記錄中的當前值來進行的。當所有的值都一致了,才對表執行適當的 sql 語句(insert、update 或 delete)。

  以上陳述說明了你還不能夠控制sql 語句。位于服務器端的更新 代碼既不會比你自己寫的好,也不會在你采用的非sql 提供程序的情況下運作。在本章節的開始部份,我已經講了web應用程序是典型的通過參數化存儲進程來更新數據的過程。不管如何,如果你用批更新,情況就會有所不同.

  在ado.net中, 模型已被擴展開來.現在,它采用更為通用的架構,通過它你可以規定你自己關于基本運算的命令語句,如插入,刪除,更新以及選擇. 更明顯的,你可以觀察到從數據源里提取數據的企圖,并且不管數據源的本性,可以提供相同的支持.ado.net中的批更新,要求你創建一個datasetcommand 對象: sqldatasetcommand 或者adodatasetcommand

  注: 在beta 2中, datasetcommand對象被稱為dataadapter 對象.

  一旦你采用了datasetcommand對象,你可以使用它的update 方法. datasetcommand提供了一系列屬性:如insertcommand, deletecommand, updatecommand, and selectcommand.它們都是command對象,但你不能夠對它們進行設置,除非缺省設置沒有按你的要求完成.這與ado中一樣.在update過程中,如果沒有設置xxxcommand屬性,但是主關鍵字已經存在內,則會自動生成command對象.

  以下代碼展示了如何為employeeslist table設置主關鍵字,

datacolumn[] keys = new datacolumn[1];
keys[0] = m_ods.tables["employeeslist"].columns["employeeid"];
m_ods.tables["employeeslist"].primarykey = keys;

  主關鍵字基本上是是datacolumn對象的一個數組.

  如果你想利用存儲過程來更新表單,或者你利用專用非sql 數據提供程序進行操作,那么你將會常常用到這 些命令屬性.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大厂| 乌拉特中旗| 金湖县| 长治市| 二连浩特市| 搜索| 彩票| 柳江县| 邯郸市| 揭阳市| 西乡县| 安平县| 广安市| 华池县| 河间市| 多伦县| 左云县| 莱芜市| 临湘市| 南康市| 林周县| 于田县| 伊金霍洛旗| 邵阳市| 澳门| 绥德县| 莱西市| 新竹市| 南川市| 揭阳市| 桃江县| 克什克腾旗| 武陟县| 丹阳市| 利津县| 诸城市| 荆门市| 上杭县| 冷水江市| 临沭县| 博兴县|