趣味理解ADO.NET對(duì)象模型
對(duì)于大多數(shù)應(yīng)用程序來(lái)說(shuō),不管它們是Windows桌面應(yīng)用程序,還是Web應(yīng)用程序,存儲(chǔ)和檢索數(shù)據(jù)都是其核心功能。所以針對(duì)數(shù)據(jù)庫(kù)的開(kāi)發(fā)已經(jīng)成為軟件開(kāi)發(fā)的一種必備技能。如果說(shuō)過(guò)去是“學(xué)好數(shù)理化,走遍天下都不怕”,那么,對(duì)于今天的軟件開(kāi)發(fā)者而言就是“學(xué)好數(shù)據(jù)庫(kù),走到哪兒都不怵!”
ADO.NET是微軟新一代.NET數(shù)據(jù)庫(kù)的訪問(wèn)架構(gòu),ADO是ActiveX Data Objects的縮寫(xiě)。ADO.NET是數(shù)據(jù)庫(kù)應(yīng)用程序和數(shù)據(jù)源之間溝通的橋梁,主要提供一個(gè)面向?qū)ο蟮臄?shù)據(jù)訪問(wèn)架構(gòu),用來(lái)開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用程序。
為了更好地理解ADO.NET的架構(gòu)模型的各個(gè)組成部分,我們可以對(duì)ADO.NET中的相關(guān)對(duì)象進(jìn)行圖示理解,如圖5-3所示的是ADO.NET中數(shù)據(jù)庫(kù)對(duì)象的關(guān)系圖。

圖5-3 ADO.NET對(duì)象模型
我們可以用趣味形象化的方式理解ADO.NET對(duì)象模型的各個(gè)部分,如圖5-4所示,可以看出這些對(duì)象所處的地位和對(duì)象間的邏輯關(guān)系。
ADO.NET趣味理解圖
對(duì)比ADO.NET的數(shù)據(jù)庫(kù)對(duì)象的關(guān)系圖,我們可以用對(duì)比的方法來(lái)形象地理解每個(gè)對(duì)象的作用,如圖5-4所示。
◆數(shù)據(jù)庫(kù)好比水源,存儲(chǔ)了大量的數(shù)據(jù)。
◆Connection好比伸入水中的進(jìn)水籠頭,保持與水的接觸,只有它與水進(jìn)行了“連接”,其他對(duì)象才可以抽到水。
◆Command則像抽水機(jī),為抽水提供動(dòng)力和執(zhí)行方法,通過(guò)“水龍頭”,然后把水返給上面的“水管”。
◆DataAdapter、DataReader就像輸水管,擔(dān)任著水的傳輸任務(wù),并起著橋梁的作用。DataAdapter 像一根輸水管,通過(guò)發(fā)動(dòng)機(jī),把水從水源輸送到水庫(kù)里進(jìn)行保存。DataReader 也是一種水管,和DataAdapter不同的是,DataReader不把水輸送到水庫(kù)里面,而是單向地直接把水送到需要水的用戶那里或田地里,所以要比在水庫(kù)中轉(zhuǎn)一下(速度)更快。
◆DataSet則是一個(gè)大水庫(kù),把抽上來(lái)的水按一定關(guān)系的池子進(jìn)行存放。即使撤掉“抽水裝置”(斷開(kāi)連接,離線狀態(tài)),也可以保持“水”的存在。這也正是ADO.NET的核心。
◆DataTable則像水庫(kù)中的每個(gè)獨(dú)立的水池子,分別存放不同種類(lèi)的水。一個(gè)大水庫(kù)由一個(gè)或多個(gè)這樣的水池子組成。
【編輯推薦】