第三節ADO( ActiveX Data Objects)程式設計模型
如文章「Delphi中引入ADO」所敘述的,ADO是一套COM(Component Object Model組件物件模型)元件(DLLs),它允許你像存取電子郵件和檔案系統一樣存取資料庫。使用ADO編寫的應用程式不需要BDE。為了用ADO存取各種資料庫,你需要有ADO/OLE DB(Object Linking and Embedding物件連結和嵌入)函式庫。使用ADO所需的可能在你的電腦中已存在:這些檔案被微軟作為Windows98/2000的一部分分發。如果你使用的是Windows95或NT,你可能需要分送或安裝ADO引擎。 Delphi 5的CD中包含有MDAC-Microsoft Data access Components(微軟資料存取元件)的安裝檔案。你應該確定使用的是MDAC的最新版本,它可以從微軟的官方網站獲得。 MDAC是讓Universal Data Access(通用資料存取)運作的關鍵技術。它們包括ActiveX Data Objects(ADO)、OLE DB和Open Database Connectivity(ODBC)。
附註:為了在Windows95的電腦上正確安裝,MDAC需要DCOM95(Distributed Component Object Model分散式元件物件模型)已被安裝。為了正確的註冊,MDAC所安裝的元件依賴DCOM95所安裝的DLLs。注意,DCOM95在NT4.0中是不需要的。在某些情況下,DCOM不需要安裝在執行Windows的電腦中。但如果沒有安裝,安裝MDAC前應安裝DCOM98。
沒有必要過多的討論OLE DB和ADO,讓我們轉移到更實際的問題。
ADO物件( ADO Objects )
ADO程式設計模型圍繞著幾個ADO物件而建立,這些物件為存取各種資料員提供多種方法。這些物件提供連接資料來源、查詢和更新記錄集、報告錯誤的功能。 Delphi透過幾個VCL元件透過存取這些物件的封裝組件。讓我們來看看與ADO工作的對像是那些:
Connection (連接)對象,透過連接字串與資料來源連接。在BDE/Delphi中,連接物件是資料庫元件和會話(session)元件的結合。
Command (指令)對象,使我們能操作資料來源。它描繪一個命令(也視為查詢或敘述),能處理對資料庫資料的增加、刪除、查詢或更新。
Recordset (記錄集)對象,是查詢(Query)指令的結果。你可以認為Recordset是一個Delphi表(Table)元件或查詢(Query)元件。 Recordset傳回的每一行都包含多個欄位(Field)物件。
其他幾個在ADO模型中存在的物件有:欄位(Field)物件、參數(Parameter)物件和錯誤(Error)物件—在接下來的章節中將會回過來談到它們。
第四節用ADOExPRess連接資料庫
在對ADOExpress集合的每個元件進行簡要的解釋之前,讓我們先了解如何連接到Access資料庫。當然,當然我們將連接到我們的範例資料庫—AboutDelphi.mdb(譯者加:在上一章中所建立的資料庫)。
Delphi(5)主要透過元件面板ADO頁上的ADOExpress元件實現對ADO的支援。幾個其他的資料庫使能組件在本課程中將被使用。目前,我們將主要關注用ADO存取Access資料庫所需的最小的元件集。
執行Delphi,建立一個新的帶有空的表單的應用程式。
為了能透過ADO和Delphi存取Access資料庫的數據,你必須在你的工程中至少增加三個數據視覺(data aware)元件。首先是資料控制(DataControls)元件頁的DBGrid—用於瀏覽從一個表格或透過查詢取得的記錄。其次是DataSource(DataAccess資料存取頁),用於連接資料集和表單上的DBGrid元件,從而實現潛在資料集資料的現實、導覽(navigation)和編輯。最後是ADOTable(ADO頁),它描繪從ADO資料庫獲得的一個表。把它們都拖放在表單(Form)上,元件名都取預設值。這時表單應如圖所示:
如果你現在運行程序,Grid中沒有數據顯示——當然,因為我們沒有真正地連到資料庫上。注意另一點:僅僅是Grid使可見的,其他兩個元件是不可視控制(controls-unvisible)。
組件間的連接(Link between components)
為了顯示資料庫中的數據,我們必須把三個元件連在一起。在物件監視器(Object Inspector)中進行如下設定:
DBGrid1.DataSource = DataSource1;
DataSource1.DataSet = ADOTable1 ;
現在我們到了比較困難的部分了,為了真正從資料庫中獲得數據,我們必須建立一個連接字串(ConnectionString)。這個字串指出了資料庫的實體儲存位置和存取方式。當你雙擊AdoTable元件的ConnectionString(連接字串)屬性的省略號按鈕,你將得到如下的對話框:
Data Source=C:/!gajba/About/aboutdelphi.mdb;
Persist Security Info=False
為了完成設計,我們必須設定透過ADOTable元件存取的表名稱—再一次使用Object Inspector。 ADOTable1.TableName = applications 如果你想在設計時看見資料庫的數據,可使用ADOTable的Active(啟動)屬性—設定它為True。 哈!如果你已進行以上的所有步驟,現在你見看到Applications表僅有一個記錄(行)。當你運行應用程式時,你甚至能改變資料庫的資料。當然,你不能做更多的是—這是我所能想到的最簡單的ADO的例子。 現在可以結束這一部分了。在下一章中,我們將討論Delphi提供所有的ADO元件以及它們怎樣與餘下的資料視覺化(data-aware)元件進行通訊,從而創建一個更強大的Delphi資料庫應用程式。 2002年12月22日20:14