ADO是一個(gè)用于存取數(shù)據(jù)源的COM組件。ADO提供了編程語(yǔ)言和統(tǒng)一數(shù)據(jù)訪問(wèn)方式OLE DB的一個(gè)中間層。允許開(kāi)發(fā)人員編寫(xiě)訪問(wèn)數(shù)據(jù)的代碼而不用關(guān)心數(shù)據(jù)庫(kù)是如何實(shí)現(xiàn)的,而只用關(guān)心到數(shù)據(jù)庫(kù)的連接。訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)候,關(guān)于SQL的知識(shí)不是必要的,但是特定數(shù)據(jù)庫(kù)支持的SQL命令仍可以通過(guò)ADO中的命令對(duì)象來(lái)執(zhí)行。
ADO被設(shè)計(jì)來(lái)繼承微軟早期的數(shù)據(jù)訪問(wèn)對(duì)象層RDO(Remote Data Objects)和DAO(Data Access Objects)。
大部分COM組件都是通過(guò)對(duì)象中的屬性、事件和方法來(lái)實(shí)現(xiàn)其功能的,ADO同樣也是依靠其幾種常用對(duì)象的屬性和方法來(lái)完成對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。
Connection對(duì)象代表與數(shù)據(jù)源進(jìn)行的唯一會(huì)話。如果是客戶端/服務(wù)器數(shù)據(jù)庫(kù)系統(tǒng),該對(duì)象可以等價(jià)于到服務(wù)器的實(shí)際網(wǎng)絡(luò)連接。Connection對(duì)象與DAO的Database對(duì)象功能相似,主要包含關(guān)于某個(gè)數(shù)據(jù)提供程序的信息及關(guān)于結(jié)構(gòu)描述的信息。
ADO Recordset對(duì)象表示由數(shù)據(jù)提供者提供的數(shù)據(jù)庫(kù)的記錄集,與DAO的Recordset對(duì)象功能相似,主要包含某個(gè)查詢返回的記錄以及記錄的游標(biāo),用戶可以在不用顯示打開(kāi)Connection對(duì)象的情況下打開(kāi)一個(gè)ADO Recordset對(duì)象,但如果打開(kāi)了一個(gè)Connection對(duì)象則可以在同一個(gè)連接上打開(kāi)多個(gè)Recordset對(duì)象。
ADO Command對(duì)象是數(shù)據(jù)源中一個(gè)獨(dú)立的結(jié)構(gòu),可以產(chǎn)生過(guò)程數(shù)據(jù)。當(dāng)使用ADO Command對(duì)象成功建立與數(shù)據(jù)源的連接后便可以通過(guò)ADO Command命令來(lái)實(shí)現(xiàn)對(duì)該數(shù)據(jù)源的操作。ADO Command對(duì)象與DAO的QueryDef對(duì)象功能相似,主要包含關(guān)于某個(gè)命令的信息,如字符串查詢、參數(shù)定義等。
ADO Field對(duì)象是記錄集中的某個(gè)單獨(dú)的列,在功能上與DAO的Field對(duì)象相似。在ADO的字段數(shù)據(jù)存取中通常使用Fields集合來(lái)讀取記錄集中的數(shù)據(jù)。由于Fields集合是Recordset對(duì)象的默認(rèn)屬性,所以在程序代碼中經(jīng)常省略Fields集合的名稱。
ADO Parameter對(duì)象是Command對(duì)象的一個(gè)獨(dú)立參數(shù),而Command對(duì)象通常為一個(gè)SQL查詢或一個(gè)已存在的過(guò)程,因此Parameter對(duì)象常作為一個(gè)查詢參數(shù)或過(guò)程參數(shù)。ADO Parameter對(duì)象與DAO的Parameter對(duì)象功能相似,主要包括了參數(shù)化Command對(duì)象的某個(gè)參數(shù)的信息。
ADO Record對(duì)象可以是記錄集中的一行,也可以是文件系統(tǒng)中的一個(gè)文件或文件夾。當(dāng)OLE DB支持異構(gòu)數(shù)據(jù)庫(kù)時(shí),Record對(duì)象代表記錄集中的一行。Record沒(méi)有自己獨(dú)特的功能,可以被提供者用來(lái)從文件系統(tǒng)或電子郵件中提供信息,但不能從標(biāo)準(zhǔn)關(guān)系數(shù)據(jù)庫(kù)中提供信息,通常可將Record、Stream和Recordset對(duì)象結(jié)合起來(lái)為用戶操作數(shù)據(jù)導(dǎo)航。
利用ADO對(duì)象訪問(wèn)數(shù)據(jù)庫(kù)與其他數(shù)據(jù)庫(kù)訪問(wèn)模型一樣,隨時(shí)可能發(fā)生許多的錯(cuò)誤,ADO Error對(duì)象與DAO的Error對(duì)象功能相似,主要包含數(shù)據(jù)提供程序出錯(cuò)時(shí)的擴(kuò)展信息。ADO Error對(duì)象表示一個(gè)單獨(dú)的錯(cuò)誤信息,當(dāng)一個(gè)ADO對(duì)象發(fā)生錯(cuò)誤時(shí)由此產(chǎn)生的所有的Error對(duì)象都會(huì)添加到Connection Errors集合中。ADO Error對(duì)象用于封裝ADO錯(cuò)誤或警告,這個(gè)錯(cuò)誤或警告可能是由ADO自己產(chǎn)生的,也可能是由數(shù)據(jù)提供者或確定的數(shù)據(jù)源產(chǎn)生的,通過(guò)對(duì)Error對(duì)象的訪問(wèn)可以確切知道發(fā)生了什么錯(cuò)誤。
聯(lián)系客服