您可以通過將 ado.net 的各項功能與 activex 數據對象 (ado) 的特定功能進行比較來理解 ado.net 的功能。
在 ado 中,數據的內存中表示形式為記錄集。在 ado.net 中,它為數據集。它們之間有重要的差異。
記錄集看起來像單個表。如果記錄集將包含來自多個數據庫表的數據,則它必須使用 join 查詢,將來自各個數據庫表的數據組合到單個結果表中。
相反,數據集是一個或多個表的集合。數據集內的表稱為數據表;明確地說,它們是 datatable 對象。如果數據集包含來自多個數據庫表的數據,它通常將包含多個 datatable 對象。即,每個 datatable 對象通常對應于單個數據庫表或視圖。這樣,數據集可以模仿基礎數據庫的結構。
數據集通常還包含關系。數據集內的關系類似于數據庫中的外鍵關系,即它使多個表中的行彼此關聯。例如,如果數據集包含一個有關投資者的表和另一個有關每個投資者的股票購買情況的表,則數據集可能還包含一個關系來連接投資者表的各個行和購買表的對應行。
由于數據集可以保存多個獨立的表并維護有關表之間關系的信息,因此它可以保存比記錄集豐富得多的數據結構,包括自關聯的表和具有多對多關系的表。
在 ado 中,您使用 ado movenext 方法順序掃描記錄集的行。在 ado.net 中,行表示為集合,因此您可以像依次通過任何集合那樣依次通過表,或通過序號索引或主鍵索引訪問特定行。datarelation 對象維護有關主記錄和詳細資料記錄的信息,并提供方法使您可以獲取與正在操作的記錄相關的記錄。例如,從 investor 表的“nate sun”的行開始,可以定位到 purchase 表中描述其購買情況的那組行。
“游標”是數據庫元素,它控制記錄導航、更新數據的能力和其他用戶對數據庫所做更改的可見性。ado.net 不具有固有的游標對象,而是包含提供傳統游標功能的數據類。例如,在 ado.net datareader 對象中提供只進、只讀游標的功能。有關游標功能的更多信息,請參見數據訪問技術。
在 ado.net 中,打開連接的時間僅足夠執行數據庫操作,例如“選擇”(select) 或“更新”(update)。您可以將行讀入數據集中,然后在不保持與數據源的連接的情況下使用它們。在 ado 中,記錄集可以提供不連接的訪問,但 ado 主要是為連接的訪問設計的。
ado 和 ado.net 中的不連接處理之間存在一個顯著差異。在 ado 中,通過調用 ole db 提供程序來與數據庫通信。但在 ado.net 中,您通過數據適配器(oledbdataadapter、sqldataadapter、odbcdataadapter 或 oracledataadapter 對象)與數據庫通信,這將調用 ole db 提供程序或基礎數據源提供的 api。ado 和 ado.net 之間的主要區別在于:在 ado.net 中,數據適配器允許您控制將對數據集所做的更改傳輸到數據庫的方式,方法是實現性能優化、執行數據驗證檢查或添加其他任何額外處理。
注意 數據適配器、數據連接、數據命令和數據讀取器是組成 .net framework 數據提供程序的組件。microsoft 和第三方供應商可能會提供其它提供程序,這些提供程序也可集成到 visual studio 中。有關不同 .net 數據提供程序的信息,請參見 .net 數據提供程序。
在應用程序間傳輸 ado.net 數據集比傳輸 ado 不連接的記錄集要容易得多。若要將 ado 不連接的記錄集從一個組件傳輸到另一個組件,請使用 com 封送。若要在 ado.net 中傳輸數據,請使用數據集,它可以傳輸 xml 流。
相對于 com 封送,xml 文件的傳輸提供以下便利之處:
com 封送提供一組有限的數據類型(由 com 標準定義的那些類型)。由于 ado.net 中的數據集傳輸基于 xml 格式,所以對數據類型沒有限制。因此,共享數據集的組件可以使用這些組件一般會使用的任何豐富的數據類型集。
傳輸大型 ado 記錄集或大型 ado.net 數據集會使用網絡資源;隨著數據量的增長,施加于網絡的壓力也在增加。ado 和 ado.net 都使您可以最大限度地降低所傳輸的數據。但 ado.net 還提供另一個性能優勢:ado.net 不需要數據類型轉換。而需要 com 封送來在組件間傳輸記錄集的 ado,則需要將 ado 數據類型轉換為 com 數據類型。
防火墻可以影響試圖傳輸不連接的 ado 記錄集的兩個組件。請記住,防火墻通常配置為允許 html 文本通過,但防止系統級請求(如 com 封送)通過。
因為組件使用 xml 交換 ado.net 數據庫,所以防火墻可以允許數據集通過。
新聞熱點
疑難解答
圖片精選