天天看點

【ADO.NET】基礎總結

 一、前言:

       在學習三層架構的時候,我們接觸到了Connection、Command、Parameters這些詞。不知道你看到了這些是否有種似曾相識的感覺呢?你有沒有想到過曾經的紅皮書執行個體呢?相關的介紹,猛戳這裡。

二、ADO和ADO.NET的相同之處:

        他們都能夠編寫對資料庫伺服器中資料進行通路和操作的應用程式,并且易于使用、高速度、低記憶體支出和占用磁盤空間較少。支援C/S和Web應用程式的主要功能。

二、ADO和ADO.NET的不同之處:

①體系結構和接口不同:

        ADO使用OLE DB接口,并基于微軟的COM技術。而ADO.NET擁有自己的ADO.NET接口,并且基于微軟的.NET體系架構。衆所周知,.NET體系不同于COM體系,而ADO.NET接口也就不同于OLE DB接口。是以,不能簡單地認為ADO.NET是ADO的“更新版”,也就是說ADO.NET和ADO是兩種不同的資料通路方式。

②存儲對象不同:

        ADO以Recordset存儲,而ADO.NET以DataSet存儲。Recordset看起來更像單表,如果Recordset以多表的方式表示就必須在SQL中進行多表連接配接。而DataSet可以是多個表的集合。

③運作方式不同:

        ADO的運作是一種線上方式,這意味着無論是浏覽或更新資料,都必須是實時的。ADO.NET則使用離線方式,在通路資料的時候,ADO.NET會利用XML制作一個資料的副本,ADO.NET的資料庫連接配接隻有在這段時間需要線上。

④細節對比:

【ADO.NET】基礎總結

三、ADO.NET3.0中用于存取和管理資料的兩個主要元件是:.NET Framework資料提供者和DataSet。.NET Framework 資料提供者和DataSet之間的關聯性如下圖所示。

【ADO.NET】基礎總結

(一)資料提供者

       .NET Framework資料提供者是一種明确設計用于管理資料以及快速存取順向隻讀資料的元件。Connection對象會提供資料來源的連接配接。Command對象可以讓開發人員存取資料庫指令,以便傳回資料、修改資料、執行預存程式。DataReader則可提供來自資料源的高效能資料流。最後DataAdapter會提供DataSet對象與資料源之間連接配接的橋梁。

(二)DataSet

        ado.net DataSet 的設計已明确指出它可獨立于任何資料來源外而存取資料。是以,它可與多個不同的資料裡來源搭配使用、與 XML 資料搭配使用,或用于管理應用程式的本機資料。DataSet 包含一或多個由資料列和資料行所組成的 DataTable 物件集合,以及 DataTable 物件中的主索引鍵、外部索引鍵、條件限制 (Constraint) 及資料的相關資訊。

 四、常用對象:

① Connection對象:

       和資料庫互動,必須連接配接它。連接配接幫助指明資料庫伺服器名稱、資料庫名稱、登入名、密碼。以及連接配接資料庫所需的其他參數。Connection對象會被Command對象使用,這樣就能夠知道在哪個資料源上執行指令。

       開發人員使用Command對象來發送SQL 語句給資料庫。Command對象使用Connection對象來指出與哪個資料源進行連接配接。開發人員能夠單獨使用Command對象來直接執行指令,或者将一個Command對象的引用傳遞給DataAdapter,它儲存了一組進行操作的指令。

② Command對象:

       與資料源建立連接配接後,就可以使用Command對象來執行增删改查等指令;Command對象常有的方法有ExecuteReader()方法、ExecuteScalar()方法、ExecuteNonQuery()方法等。

③ DataReader對象:

       許多資料操作要求開發人員隻是讀取一串資料。DataReader對象允許開發人員獲得從Command對象的SELECT語句得到的結果。考慮性能的因素,從DataReader傳回的資料都是快速的且隻是“向前”的資料流。這意味着開發人員隻能按照一定的順序從資料流中取出資料。這對于速度來說是有好處的,但是如果開發人員需要操作資料,更好的辦法是使用DataSet。

④ DataSet對象:

        DataSet對象是資料在記憶體中的表示形式。它包括多個DataTable對象,而DataTable包含列和行,就象一個普通的資料庫中的表。開發人員甚至能夠定義表之間的關系來建立主從關系(parent-child relationships)。DataSet是在特定的場景下使用――幫助管理記憶體中的資料并支援對資料的斷開操作的。DataSet是被所有Data Providers使用的對象,是以它并不像Data Provider一樣需要特别的字首。

⑤DataAdapter對象: 

       某些時候開發人員使用的資料主要是隻讀的,并且開發人員很少需要将其改變至底層的資料源。同樣一些情況要求在記憶體中緩存資料,以此來減少并不改變的資料被資料庫調用的次數。DataAdapter通過斷開模型來幫助開發人員友善的完成對以上情況的處理。當在一單批次的對資料庫的讀寫操作的持續的改變傳回至資料庫的時候,DataAdapter 填充(fill)DataSet對象。DataAadapter包含對連接配接對象以及當對資料庫進行讀取或者寫入的時候自動的打開或者關閉連接配接的引用。另外,DataAdapter包含對資料的select、insert、update和delete操作的Command對象引用。開發人員将為DataSet中的每一個Table都定義DataAadapter,它将為開發人員照顧所有與資料庫的連接配接。是以開發人員将做的工作是告訴DataAdapter什麼時候裝載或者寫入到資料庫。

        DataAdapter在資料庫和資料集之間移動記錄。

【ADO.NET】基礎總結

五、資料庫與應用程式之間的互動路徑。

【ADO.NET】基礎總結