利用ADO.NET命令進行使用介紹
ADO.NET命令真正的進步源自數據集這一概念的提出,在ADO中不存在與ADO.NET DataSet類似的對象。雖然我們無法從這個例子看出DataSet對象的重要性,但從體系結構上說,DataSet對象處于一個不同的層次。它允許我們在同一個邏輯對象的組織之下管理多個表,
修改數據
以脫機方式工作時,我們對數據的添加、修改、刪除等更新操作在內存緩沖中進行。因此,如果你利用NewRow添加了新的記錄,或者利用某個簡單的工具編輯現有的行,這些更新只在內存中進行,不影響底層的數據源。更新操作在我們從Command對象調用Update方法提交更改的時候發生。Update方法為數據集中每個被插入、ADO.NET命令修改、刪除的行分別調用Insert、Update和Delete命令。
我們可以利用ADO.NET命令的InsertCommand、UpdateCommand和DeleteCommand屬性,指定面向特定數據源的命令,插入、修改或刪除記錄。這些屬性的內容和我們所要操作的數據提供者有關,但是,如果數據提供者是一個數據庫管理系統(DBMS),屬性的內容很可能就是SQL命令字符串。當Update方法執行時,如果這些屬性還沒有設置好,但DataSet對象包含了主鍵信息,那么,ADO.NET將自動生成命令文本。#t#
我建議,只有當應用程序要求讀取一定數量的記錄并進行修改,而且修改的次序和數量不可預測時,才使用這種插入、更改、刪除記錄的方法。ADO.NET命令如果應用程序的用戶界面只是要求填寫幾個字段,然后插入或更新記錄,那么,執行SQL語句或存儲過程是更理想的方法。
設置了關系之后,ADO.NET將拒絕所有破壞該關系的數據集改動操作,并產生一個運行時異常。在遍歷表的記錄時,調用GetChildRows方法可以從已連接的表訪問所有相關的行。GetChildRows方法返回一個DataRow對象的數組,這是一種新的分層式記錄導航方式,而傳統的記錄導航方式屬于順序模式或隨機模式。
關系是不可傳遞的。ADO.NET命令假設表A關聯到表B,表B又關聯到表C的一些行。另外,假設在遍歷表A記錄的時候,對于每一個表A的記錄,我們要訪問現有關系中的子記錄。如果我們想要訪問對應表B中特定記錄的表C記錄,那么,我們不能使用由A-B的關系得到的表B的ADO.NET命令;相反,我們必須從表B打開一個新的表視圖,找到我們想要的特定記錄,然后通過表B對表C的關系調用GetChildRows方法。