關于ADO.NET ADO比較揭秘
有些人好像對ADO.NET和ADO的區別好像不是很清楚,昨天在看了一個關于這方面的書,把我所記下的分析給大家聽聽。您可以通過將 ADO.NET 的各項功能與 ActiveX 數據對象 (ADO) 的特定功能進行比較來理解 ADO.NET 的功能。 在ADO中,數據的內存中表示形式為記錄集。在ADO.NET中,它為數據集。它們之間有重要的差異。
#T#ADO.NET ADO比較表的個數
記錄集看起來像單個表。如果記錄集將包含來自多個數據庫表的數據,則它必須使用JOIN查詢,將來自各個數據庫表的數據組合到單個結果表中。相反,數據集是一個或多個表的集合。數據集內的表稱為數據表;明確地說,它們是DataTable對象。如果數據集包含來自多個數據庫表的數據,它通常將包含多個DataTable對象。即,每個DataTable對象通常對應于單個數據庫表或視圖。這樣,數據集可以模仿基礎數據庫的結構。
數據集通常還包含關系。數據集內的關系類似于數據庫中的外鍵關系,即它使多個表中的行彼此關聯。例如,如果數據集包含一個有關投資者的表和另一個有關每個投資者的股票購買情況的表,則數據集可能還包含一個關系來連接投資者表的各個行和購買表的對應行。由于數據集可以保存多個獨立的表并維護有關表之間關系的信息,因此它可以保存比記錄集豐富得多的數據結構,包括自關聯的表和具有多對多關系的表。
ADO.NET ADO比較數據導航和游標
在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.NET數據集比傳輸ADO不連接的記錄集要容易得多。若要將ADO不連接的記錄集從一個組件傳輸到另一個組件,請使用COM封送。若要在ADO.NET中傳輸數據,請使用數據集,它可以傳輸XML流。相對于COM封送,XML文件的傳輸提供以下便利之處:更豐富的數據類型 。COM 封送提供一組有限的數據類型(由COM標準定義的那些類型)。由于ADO.NET數據集傳輸基于XML格式,所以對數據類型沒有限制。因此,共享數據集的組件可以使用這些組件一般會使用的任何豐富的數據類型集。