轉(zhuǎn)帖|其它|編輯:郝浩|2010-08-11 11:22:54.000|閱讀 1692 次
概述:本文介紹了在 C++Builder 5環(huán)境下新增的ADO控件的使用方法,并給出了一個(gè)簡(jiǎn)單的實(shí)例。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
本文介紹了在 C++Builder 5環(huán)境下新增的ADO控件的使用方法,并給出了一個(gè)簡(jiǎn)單的實(shí)例。
一、ADO概述
ADO(Active Data Object) 是微軟公司基于OLE DB的數(shù)據(jù)庫(kù)模型。它實(shí)現(xiàn)了一系列COM接口,通過(guò)數(shù)據(jù)提供者(Data Provider)和數(shù)據(jù)使用者( Data Consumer)來(lái)實(shí)現(xiàn)廣義的數(shù)據(jù)存取。ADO模型一方面簡(jiǎn)化了數(shù)據(jù)存取,例如使用Jet OLE DB Provider可以實(shí)現(xiàn)Access數(shù)據(jù)庫(kù)的無(wú)DSN連接;另一方面,在ASP等Internet應(yīng)用中也得到了廣泛的使用。
在C++Builder 5/Delphi 5中諸多新增特性中,ADO數(shù)據(jù)控件的引入是比較引人注目的,它使ADO編程和在Visual Basic 6中一樣容易。由于VCL類庫(kù)對(duì)ADO的封裝更加合理,舊的數(shù)據(jù)控件可以很容易地升級(jí)到ADO支持,而不象在VB中某些DAO或RDO控件無(wú)法兼容ADO。
二、使用ADO控件
在C++Builder 5中,ADO控件實(shí)質(zhì)上是一種數(shù)據(jù)訪問(wèn)組件。如果讀者有過(guò)C++Builder先前版本的數(shù)據(jù)庫(kù)開(kāi)發(fā)經(jīng)驗(yàn),就會(huì)發(fā)現(xiàn)與數(shù)據(jù)訪問(wèn)組件相連的數(shù)據(jù)源組件(TdataSource) 和數(shù)據(jù)感知組件(如TDBGrid)的使用方法和以前一樣,只需把 TdataSource 連到ADO控件上即可。
如果要實(shí)現(xiàn)簡(jiǎn)單的表操作或查詢,可以使用TADOTable或TADOQuery。更一般地,可以使用TADODataSet控件,其基本屬性的設(shè)置方法如下:
(1)ConnectionString屬性:點(diǎn)擊屬性欄中的省略號(hào),出現(xiàn)配置窗口,選"Use Connection String",按Build按鈕。在接下來(lái)的窗口中選擇數(shù)據(jù)提供者,以微軟的Northwind示例Access數(shù)據(jù)庫(kù)為例,選Microsoft Jet 4.0 OLE DB Provider, 按Next按鈕,選擇數(shù)據(jù)庫(kù)的路徑和文件名。點(diǎn)擊Test Connection按鈕可以測(cè)試數(shù)據(jù)庫(kù)連接。點(diǎn)擊"確定"。
?。?)CommandText屬性:可以使用CommandText Editor生成SQL語(yǔ)句或Shape語(yǔ)句。
注意,TADODataSet不支持不返回結(jié)果集的DML語(yǔ)句,如DELETE,INSERT,UPDATE。如果要使用這些語(yǔ)句,選擇TADOCommand或TADOQuery。
這些ADO控件自身已能實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接,也可以設(shè)置其Connection屬性為一個(gè)TADOConnection控件名,而在 TADOConnection控件中設(shè)置 ConnectionString屬性。所有屬性也可以用代碼在運(yùn)行期間設(shè)置。
三、一個(gè)Master/Detail實(shí)例
下面以一個(gè)簡(jiǎn)單的實(shí)例說(shuō)明ADO控件的應(yīng)用。這里我們用Shape語(yǔ)句實(shí)現(xiàn)Master/Detail關(guān)系。關(guān)于Shape語(yǔ)句的詳細(xì)解釋,請(qǐng)參考MSDN文檔。
1.新建一個(gè)項(xiàng)目,并在窗體中放置下列控件(帶省略號(hào)的屬性值先不設(shè)置):
名稱 控件類型 屬性 屬性值
ADOConnection1 TADOConnection ConnectionString …
ADODataSet1 TADODataSet Connection ADOConnection1 CommandText…
DataSource1 TDataSource DataSet ADODataSet1
DBGrid1 TDBGrid DataSource DataSource1
ADODataSet2 TADODataSet DataSetField …
DataSource2 TDataSource DataSet ADODataSet2
DBGrid2 TDBGrid DataSource DataSource2
2.設(shè)置 ADOConnection1的ConnectionString值
選擇Data Provider為MSDataShape,并設(shè)置Northwind數(shù)據(jù)庫(kù)的路徑和名稱。
3.設(shè)置 ADODataSet1的CommandText值如下:
SHAPE {select * from Orders}
APPEND ({select * from [Order Details]} AS Details
RELATE OrderID TO OrderID)
這里定義了主表Orders和子表Order Details通過(guò)OrderID的連接。
4.在ADODataSet1控件上右擊,選Fields Editor…->右擊->選Add fields… 或Add all fields,務(wù)必選中"Details"項(xiàng),這是我們?cè)赟hape語(yǔ)句中定義的用于子表連接主表的數(shù)據(jù)集。
5.設(shè)置
ADODataSet2的DataSetField值,這時(shí)可供選擇的值為ADODataSet1Details,選中它,表明與ADODataSet1的Details列相連。
6.出現(xiàn)在 DBGrid1中的 Details 列,其每個(gè)記錄都是DataSet類型的??梢栽贒BGrid1中隱藏 Details列的顯示:選擇 DBGrid1的Columns屬性,在彈出窗口的工具條上點(diǎn)擊 Add all Fields,選中 Details,點(diǎn)擊Delete Selected.
7.運(yùn)行該程序,當(dāng)數(shù)據(jù)指針在主表Orders中移動(dòng)時(shí),子表Order Details自動(dòng)更新以顯示不同訂單的明細(xì)條目。
從以上實(shí)例看出, C++Builder 5完全具備開(kāi)發(fā)復(fù)雜的ADO應(yīng)用程序的能力,其強(qiáng)大的VCL控件使開(kāi)發(fā)者能集中注意力于數(shù)據(jù)庫(kù)的邏輯與功能設(shè)計(jì),而不必關(guān)心繁復(fù)的常規(guī)代碼和操作。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載