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