葉 文
(武漢鐵路職業技術學院實訓中心,湖北 武漢 430205)
Delphi環境下使用ADO技術訪問數據庫的方法研究
葉 文
(武漢鐵路職業技術學院實訓中心,湖北 武漢 430205)
闡述了ADO技術訪問數據庫的結構、Delphi2010中ADO對象模型、Delphi2010中ADO編程模型(工作流程),通過一個完整的實例,介紹了Delphi環境下使用ADO技術訪問數據庫的方法。
Delphi;ADO;數據庫
ADO(ActiveX Data Objects,ActiveX數據對象)是Microsoft公司提供的一種應用程序級接口中,提供統一的方式訪問多種數據源。ADO 技術是微軟提出來的處理關系型數據庫和非關系型數據庫的新技術,是專門為了給大范圍商業數據源提供訪問而設計的,包括傳統的關系型數據表、電子郵件系統、圖形格式、Internet資源等[1-2]。 ADO 所需內存少,適合大流量和大事務量的網絡計算機系統。由于ADO技術的迅速普及,從Delphi5.0開始加入了ADO技術的模塊,并逐漸形成Delphi數據庫設計的主流。下面,筆者主要研究了在Delphi2010環境下使用ADO技術實現數據庫訪問的方法。

圖1 ADO訪問數據庫體系結構 圖2 Delphi2010中ADO組件對象

圖3 ADO工作流程
1)ADO技術訪問數據庫的結構 ADO技術訪問數據庫的體系結構如圖1所示。
2)Delphi2010中ADO對象模型 Delphi2010中ADO對象模型位于dbGo面板中,如圖2所示。
3)Delphi2010中ADO編程模型(工作流程) 在Delphi2010中,用戶直接通過ADO組件訪問數據庫(包括本地數據庫和遠程數據庫)的工作流程[3]如圖3所示。用ADOConnection組件連接數據庫,用ADOCommand組件指定數據庫的操作(增加、刪除及查詢),用ADODataSet指定操作結果集,通過數據通道控件DataSource建立數據控制控件與操作結果集間的關系。
根據數據庫存放的位置不同,數據庫有本地數據庫和遠程數據庫之分。本地數據庫是指應用系統和所要訪問的數據在同一個計算機里,遠程數據庫是指應用系統和所訪問的數據不在同一計算機內,即在網絡中的另一臺計算機上。因此在編寫一個數據庫應用系統時,應根據數據的存放地點選擇數據的訪問方式。對于應用程序設計,使用ADO方法訪問數據庫[4]通常按照以下步驟進行:①連接到數據源;②建立操作數據源的命令;③執行操作命令,若執行操作命令時有返回數據,則數據將存儲在緩沖區中,緩沖區中的數據易于檢查、操作或更改,用戶可通過更新緩沖區中的數據更新數據源。
操作上述步驟時需提供常規檢測錯誤方法。
ADO具有很強的靈活性,在設計的程序里可能只需經過其中部分過程就能完成用戶所需的功能。

圖4 程序運行效果
下面以某一個管理信息系統的開發為例,介紹在Delphi2010中運用ADO技術訪問Access數據庫進行程序設計的實踐過程。
數據庫名為d: empxy.mdb,pwd為其中的一個表名,包括姓名、性別及口令字段;數據源名為xz,顯示pwd中內容的效果如圖4所示。
具體步驟如下:
Step1:啟動Delphi,新建一個VCL應用的項目;
Step2:在窗口加DBGrid控件,控件名取默認值,并調整窗口及控件的大小至合適;
Step3:添加代碼。
1)使用ODBC接口連接數據庫的代碼如下:
Var
ADOQuery1:TADOQuery;
DataSource1:TDataSource;
Begin
ADOQuery1:=TADOQuery.Create(nil);
DataSource1:=TDataSource.Create(nil);
datasource1.DataSet:=ADOQuery1;
DBGrid1.DataSource:=datasource1;
try
ADOQuery1.SQL.Clear;
ADOQuery1.ConnectionString:=‘Provider=MSDASQL.1;Persist Security Info=False;Data Source=xz’;
ADOQuery1.SQL.Add(‘select * from pwd’);
ADOQuery1.Active:=true;
ADOQuery1.Active:=false;
ADOQuery1.Close;
except
MessageDlg(‘數據庫建立發生錯誤,請與管理員聯系’, mtInformation,[mbOk], 0);
abort;
end;
End;
2)使用OLE DB接口連接數據庫的代碼如下:
Var
ADODataSet 1: TADODataSet;DataSource1:TDataSource;
Begin
ADODataSet1:=TADODataSet.Create(nil);
DataSource1:=TDataSource.Create(nil);
try
DataSource1.DataSet:=ADODataSet1;
DBGrid1.DataSource:=DataSource1;
ADODataSet1.ConnectionString:=‘Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D: empxy.mdb;Persist Security Info=False’;
ADODataSet1.CommandText:=‘select * from pwd’;
ADODataSet1.Active:=true;
ADODataSet1.Active:=false;
except
MessageDlg(‘數據庫建立發生錯誤,請與管理員聯系’, mtInformation,[mbOk], 0);
abort;
end;
End;
[1]吳懋剛.Delphi程序設計基礎教程[M].北京:北京理工大學出版社,2007.
[2]葉核亞,陳瑞編著.Delphi程序設計實用教程[M].北京:電子工業出版社,2007.
[3]哀慶鋒,景朋森.基于Delphi下ADO技術應用技巧的探索與實踐[J].淮海工學院學報(自然科學版),2005,14(3):27-31.
[4]盛志偉,黃健,魏樂.ADO數據訪問方法[J].金華職業技術學院學報,2005,5(3):8-30.
[編輯] 洪云飛
10.3969/j.issn.1673-1409(N).2012.11.043
TP311
A
16731409(2012)11N13302