熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ADO.Net與ADO在數據內存中的差異討論

2013-11-13 10:15:31  來源: .NET編程 

  數據的內存中表示形式

  在 ADO 中數據的內存中表示形式為記錄集在 ADONET 中它為數據集它們之間有重要的差異

  表的個數

  記錄集看起來像單個表如果記錄集將包含來自多個數據庫表的數據則它必須使用 JOIN 查詢將來自各個數據庫表的數據組合到單個結果表中

  相反數據集是一個或多個表的集合數據集內的表稱為數據表明確地說它們是 DataTable 對象如果數據集包含來自多個數據庫表的數據它通常將包含多個 DataTable 對象每個 DataTable 對象通常對應於單個數據庫表或視圖這樣數據集可以模仿基礎數據庫的結構

  數據集通常還包含關系數據集內的關系類似於數據庫中的外鍵關系即它使多個表中的行彼此關聯例如如果數據集包含一個有關投資者的表和另一個有關每個投資者的股票購買情況的表則數據集可能還包含一個關系來連接投資者表的各個行和購買表的對應行

  由於數據集可以保存多個獨立的表並維護有關表之間關系的信息因此它可以保存比記錄集豐富得多的數據結構包括自關聯的表和具有多對多關系的表

  數據導航和游標

  在 ADO 中您使用 ADO MoveNext 方法順序掃描記錄集的行在 ADONET 中行表示為集合因此您可以像依次通過任何集合那樣依次通過表或通過序號索引或主鍵索引訪問特定行DataRelation 對象維護有關主記錄和詳細資料記錄的信息並提供方法使您可以獲取與正在操作的記錄相關的記錄例如從 Investor 表的Nate Sun的行開始可以定位到 Purchase 表中描述其購買情況的那組行

  游標是數據庫元素它控制記錄導航更新數據的能力和其他用戶對數據庫所做更改的可見性ADONET 不具有固有的游標對象而是包含提供傳統游標功能的數據類例如在 ADONET DataReader 對象中提供只進只讀游標的功能有關游標功能的更多信息請參見數據訪問技術

  將打開連接的時間降至最低

  在 ADONET 中打開連接的時間僅足夠執行數據庫操作例如選擇(Select) 或更新(Update)您可以將行讀入數據集中然後在不保持與數據源的連接的情況下使用它們在 ADO 中記錄集可以提供不連接的訪問但 ADO 主要是為連接的訪問設計的

  ADO 和 ADONET 中的不連接處理之間存在一個顯著差異在 ADO 中通過調用 OLE DB 提供程序來與數據庫通信但在 ADONET 中您通過數據適配器(OleDbDataAdapterSqlDataAdapterOdbcDataAdapter 或 OracleDataAdapter 對象)與數據庫通信這將調用 OLE DB 提供程序或基礎數據源提供的 APIADO 和 ADONET 之間的主要區別在於在 ADONET 中數據適配器允許您控制將對數據集所做的更改傳輸到數據庫的方式方法是實現性能優化執行數據驗證檢查或添加其他任何額外處理

  注意 數據適配器數據連接數據命令和數據讀取器是組成 NET Framework 數據提供程序的組件Microsoft 和第三方供應商可能會提供其它提供程序這些提供程序也可集成到 Visual Studio 中有關不同 NET 數據提供程序的信息請參見 NET 數據提供程序

  在應用程序間共享數據

  在應用程序間傳輸 ADONET 數據集比傳輸 ADO 不連接的記錄集要容易得多若要將 ADO 不連接的記錄集從一個組件傳輸到另一個組件請使用 COM 封送若要在 ADONET 中傳輸數據請使用數據集它可以傳輸 XML 流

  相對於 COM 封送XML 文件的傳輸提供以下便利之處

  更豐富的數據類型

  COM 封送提供一組有限的數據類型(由 COM 標准定義的那些類型)由於 ADONET 中的數據集傳輸基於 XML 格式所以對數據類型沒有限制因此共享數據集的組件可以使用這些組件一般會使用的任何豐富的數據類型集

  性能

  傳輸大型 ADO 記錄集或大型 ADONET 數據集會使用網絡資源隨著數據量的增長施加於網絡的壓力也在增加ADO 和 ADONET 都使您可以最大限度地降低所傳輸的數據但 ADONET 還提供另一個性能優勢ADONET 不需要數據類型轉換而需要 COM 封送來在組件間傳輸記錄集的 ADO則需要將 ADO 數據類型轉換為 COM 數據類型

  穿透防火牆

  防火牆可以影響試圖傳輸不連接的 ADO 記錄集的兩個組件請記住防火牆通常配置為允許 HTML 文本通過但防止系統級請求(如 COM 封送)通過

  因為組件使用 XML 交換 ADONET 數據庫所以防火牆可以允許數據集通過


From:http://tw.wingwit.com/Article/program/net/201311/13083.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.