ADO與ADO.NET 的區別

風靈使發表於2019-04-07

前面也分別對ADOADO.NET進行概述,從前面的兩篇文章來看,我們都知道ADOADO.NET 都是一種資料庫訪問的方式,都是從最基本的Connection(連線)物件開始的,可以說ADO.NETADO的一種改進版,在ADO的基礎之上ADO.NET 統一了資料容器類程式設計介面,無論你打算用哪種編寫哪種應用程式,都可以通過同一組類來處理資料 。

ADO的基礎上,ADO.NET做了很多的改進,以下是它們區別:
在這裡插入圖片描述

1.物件不同:

ADO使用的是OLEDB介面並基於微軟的COM技術,而ADO.NET有自己的ADO.NET介面並且基於微軟的.NET體系架構。

2.儲存物件不同:

ADORecordset記錄集形式進行存放,ADO.NET是以DateSet資料集形式進行存放。記錄集看起來更像一個單表,如果要讓Recordset以多表的方式就必須在SQL中進行多表連線,反之,資料集是一個或多個表的集合,它就相當於是記憶體中的一個資料庫,資料庫記憶體放的是DataTable物件,也就是我們平時所說的表。

3.連線方式不同:

ADO在與資料庫連線後,會一直保持連線,直到斷開(為連線而設計)。而ADO.NET讀取完所需要資料之後,會自動斷開連線。當需要更新資料時,會再次連線。也就是說ADO.NET讀取資料庫中的資料有兩種方式:一種是基於線上的連線方式,一種是基於離線的非連線方式。為什麼會有這兩種方式呢?我想主要是由於ADO.NET 取消了以往的Recordset 物件,而採用DataSet的緣故吧。

Dataset,它相當於是記憶體中的一個資料庫,它是不依賴與資料庫的獨立資料集合,所謂獨立就是說,即使是斷開資料鏈路或者是關閉資料庫,它仍然是可以使用的。Dataset內部是用XML(可擴充套件標記語言)來描述資料的。在訪問資料的時候,ADO.NET會利用XML製作資料的一份副本,也就是說只有在這段時間內是需要線上的。而在ADO中,xml只不過是一種輸入和輸出格式。

此外:由於Dataset內部是用XML(可擴充套件標記語言)格式來描述資料的,所以ADO.NET對資料型別沒有限制。而Com技術要求使用的資料型別必須是符合Com規範,所以ADO對資料型別有限制要求。

相關文章