第三節(jié) ADO(ActiveX Data Objects)編程模型
如文章“Delphi中引入ADO”所敘述的,ADO是一套COM(Component Object Model組件對象模型)組件(DLLs),它允許你像訪問電子郵件和文件系統(tǒng)一樣訪問數(shù)據(jù)庫。使用ADO編寫的應(yīng)用程序不需要BDE。為了用ADO訪問各種數(shù)據(jù)庫,你需要有ADO/OLE DB(Object Linking and Embedding對象鏈接和嵌入)庫。使用ADO所需要的可能在你的計算機(jī)中已存在:這些文件被微軟作為Windows98/2000的一部分分發(fā)。如果你使用的是Windows95或NT,你可能需要分發(fā)或安裝ADO引擎。Delphi 5的CD中包含有MDAC-Microsoft Data access Components(微軟數(shù)據(jù)訪問組件)的安裝文件。你應(yīng)該確定使用的是MDAC的最新版本,它可以從微軟的官方網(wǎng)站獲得。MDAC是使Universal Data Access(通用數(shù)據(jù)訪問)起作用的關(guān)鍵技術(shù)。它們包括ActiveX Data Objects(ADO)、OLE DB和Open Database Connectivity(ODBC)。
注:為了在Windows95的計算機(jī)上正確安裝,MDAC需要DCOM95(Distributed Component Object Model分布式組件對象模型)已被安裝。為了正確的注冊,MDAC所安裝的組件依賴于DCOM95所安裝的DLLs。注意,DCOM95在NT4.0中是不需要的。在某些情況下,DCOM不需要安裝在運行Windows的計算機(jī)中。但如果沒有被安裝,安裝MDAC前應(yīng)安裝DCOM98。
沒有必要過多的討論OLE DB和ADO,讓我們轉(zhuǎn)移到更實際的問題上。
ADO 對象(ADO Objects)
ADO編程模型圍繞著幾個ADO對象而建立,這些對象為訪問各種數(shù)據(jù)員提供多種方法。這些對象提供連接數(shù)據(jù)源、查詢和更新記錄集、報告錯誤的功能。Delphi通過幾個VCL組件通過訪問這些對象的封裝組件。讓我們看一下與ADO工作的對象是那些:
Connection (連接)對象,通過連接字符串與數(shù)據(jù)源連接。在BDE/Delphi中,連接對象是數(shù)據(jù)庫組件和會話(session)組件的結(jié)合。
Command (命令)對象,使我們能操作數(shù)據(jù)源。它描繪一個命令(也視為查詢或敘述),能處理對數(shù)據(jù)庫數(shù)據(jù)的增加、刪除、查詢或更新。
Recordset (記錄集)對象,是查詢(Query)命令的結(jié)果。你可以認(rèn)為Recordset 是一個Delphi表(Table)組件或查詢(Query)組件。Recordset 返回的每一行都包含多個字段(Field)對象。
其他幾個在ADO模型中存在的對象有:字段(Field)對象、參數(shù)(Parameter)對象和錯誤(Error)對象—在接下來的章節(jié)中將會回過來談到它們。
第四節(jié) 用ADOExPRess連接數(shù)據(jù)庫
在對ADOExpress集合的每個組件進(jìn)行簡要的解釋之前,讓我們首先了解一下怎樣連接到Access數(shù)據(jù)庫。當(dāng)然,當(dāng)然我們將連接到我們的樣例數(shù)據(jù)庫—AboutDelphi.mdb(譯者加:在上一章中所建立的數(shù)據(jù)庫)。
Delphi(5)主要通過組件面板ADO頁上的ADOExpress組件實現(xiàn)對ADO的支持。幾個其他的數(shù)據(jù)庫使能組件在本課程中將被使用。目前,我們將主要關(guān)注用ADO訪問Access數(shù)據(jù)庫所需的最小的組件集。
運行Delphi,建立一個新的帶有空的表單的應(yīng)用程序。
為了能通過ADO和Delphi訪問Access數(shù)據(jù)庫的數(shù)據(jù),你必須在你的工程中至少增加三個數(shù)據(jù)可視(data aware)組件。首先是數(shù)據(jù)控制(DataControls)組件頁的DBGrid—用于瀏覽從一個表格或通過查詢獲得的記錄。其次是DataSource(DataAccess數(shù)據(jù)訪問頁),用于連接數(shù)據(jù)集和表單上的DBGrid組件,從而實現(xiàn)潛在數(shù)據(jù)集數(shù)據(jù)的現(xiàn)實、導(dǎo)航(navigation)和編輯。最后是ADOTable(ADO頁),它描繪從ADO數(shù)據(jù)庫獲得的一個表。把它們都拖放在表單(Form)上,組件名都取默認(rèn)值。這時表單應(yīng)如圖所示:
如果你現(xiàn)在運行程序,Grid中沒有數(shù)據(jù)顯示—當(dāng)然,因為我們沒有真正地連到數(shù)據(jù)庫上。注意另一點:僅僅Grid使可見的,其他兩個組件是不可視控件(controls-unvisible)。
組件間的連接(Link between components)
為了顯示數(shù)據(jù)庫中的數(shù)據(jù),我們必須把三個組件連在一起。在對象監(jiān)視器(Object Inspector)中進(jìn)行如下設(shè)置:
DBGrid1.DataSource = DataSource1;
DataSource1.DataSet = ADOTable1 ;
現(xiàn)在我們到了比較難的部分了,為了真正從數(shù)據(jù)庫中獲得數(shù)據(jù),我們必須建立一個連接字符串(ConnectionString)。這個字符串指出了數(shù)據(jù)庫的物理存儲位置和訪問方式。當(dāng)你雙擊AdoTable組件的ConnectionString(連接字符串)屬性的省略號按鈕,你將得到如下的對話框:
新聞熱點
疑難解答
圖片精選