基于bde的數(shù)據(jù)庫連接方法_第1頁
基于bde的數(shù)據(jù)庫連接方法_第2頁
基于bde的數(shù)據(jù)庫連接方法_第3頁
基于bde的數(shù)據(jù)庫連接方法_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于bde的數(shù)據(jù)庫連接方法

現(xiàn)在數(shù)據(jù)庫應(yīng)用程序變得越來越普遍,各種語言開發(fā)平臺都支持開發(fā)數(shù)據(jù)庫應(yīng)用程序。C++Builder是Inprise公司繼Delpli之后提出的一款高性能可視化集成快速開發(fā)工具。它使用的VCL類庫提供200個左右的控件,使得C++Builder開發(fā)應(yīng)用程序非常方便容易,特別是建立在BDE和ADO基礎(chǔ)上的數(shù)據(jù)庫訪問控件,使得利用C++Builder進(jìn)行數(shù)據(jù)庫訪問要比其它開發(fā)工具更加方便快捷。下面就這兩種連接數(shù)據(jù)庫方法及優(yōu)缺點做一下比較,談?wù)劰P者的體會。1數(shù)據(jù)庫連接由bde組件執(zhí)行1數(shù)據(jù)庫驅(qū)動文件BDE是Borland公司提供的實現(xiàn)數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫底層連接的工具軟件,全稱為BorlandDatabaseEngine,即Borland數(shù)據(jù)庫引擎。它是基于Windows操作系統(tǒng)的32位數(shù)據(jù)庫引擎。通過BDE,應(yīng)用程序可以實現(xiàn)與數(shù)據(jù)庫底層的連接。BDE提供的數(shù)據(jù)庫別名管理機(jī)制,隱藏了數(shù)據(jù)庫的物理性質(zhì),使數(shù)據(jù)庫應(yīng)用程序不需要因為數(shù)據(jù)庫物理結(jié)構(gòu)的變化而修改代碼。BDE為許多數(shù)據(jù)庫提供了統(tǒng)一的接口API(ApplicationProgramInterface,應(yīng)用程序公共接口),它包括Dbase、Paradox、FoxPro、Access、Text、InterBase、Sybase、Oracle和MicrosoftSQLServer,同時也支持微軟的ODBC(OpenDatabaseconnectivity,開放的數(shù)據(jù)庫互連)數(shù)據(jù)源。系統(tǒng)只要提供數(shù)據(jù)庫的驅(qū)動程序,BDE就能訪問這種類型的數(shù)據(jù)庫,不需要了解數(shù)據(jù)庫的具體細(xì)節(jié)。BDE的核心數(shù)據(jù)庫驅(qū)動文件由一系列動態(tài)連接庫組成,它們是BDE訪問本地數(shù)據(jù)庫和遠(yuǎn)程數(shù)據(jù)庫的驅(qū)動程序庫。對于單機(jī)使用數(shù)據(jù)庫,C++Builder直接通過BDE來控制數(shù)據(jù)庫的存取,如圖1所示。對于遠(yuǎn)程數(shù)據(jù)庫,BDE需通過ODBC或SQLLinks來控制數(shù)據(jù)庫的存取,如圖2所示。在訪問ODBC數(shù)據(jù)源之前,需要為BDE建立內(nèi)置的ODBC驅(qū)動程序,即通過ODBC管理器(Administrator)負(fù)責(zé)安裝驅(qū)動程序,管理數(shù)據(jù)源。C++Builder通過SQLLinks可訪問SQL服務(wù)器數(shù)據(jù)庫,它們是Oracle、Sybase、SQLServer、DB2、Informix和InterBase數(shù)據(jù)庫。在C++Builder中通過BDEAdminstrator來進(jìn)行BDE數(shù)據(jù)庫引擎的數(shù)據(jù)庫驅(qū)動程序的安裝和數(shù)據(jù)庫連接參數(shù)的設(shè)置,以及創(chuàng)建、刪除、修改和維護(hù)數(shù)據(jù)庫別名。2數(shù)據(jù)庫訪問控制軟件C++Builder5中基于BDE上的連接數(shù)據(jù)庫控件有TTable、TQuery、TDatabase和TSession。TDatabase控件為應(yīng)用程序提供不同的控制數(shù)據(jù)庫連接的方法,如永久的連接、自定義的數(shù)據(jù)庫服務(wù)器登錄、事務(wù)控制、應(yīng)用程序中的BDE別名等。TTable和TQuery控件是最常用的數(shù)據(jù)庫訪問控件。TTable控件用來訪問數(shù)據(jù)庫中單個表;TQuery控件封裝了結(jié)構(gòu)化查詢語句,應(yīng)用程序通過結(jié)構(gòu)化查詢語句可以獲得多個數(shù)據(jù)庫表中的數(shù)據(jù)。TSession控件提供了一個應(yīng)用程序范圍內(nèi)的一組數(shù)據(jù)庫連接的全局管理。在連接數(shù)據(jù)庫時C++Builder自動創(chuàng)建一個默認(rèn)會話期,這個默認(rèn)的會話期處理標(biāo)準(zhǔn)的數(shù)據(jù)庫連接,當(dāng)應(yīng)用程序要訪問不同網(wǎng)址上的多個數(shù)據(jù)庫表時,就要使用TSession控件,每一個會話連接一個不同網(wǎng)址。各控件在數(shù)據(jù)庫應(yīng)用體系結(jié)構(gòu)中的位置如圖3所示。3數(shù)據(jù)庫名存存儲技術(shù)現(xiàn)以訪問遠(yuǎn)程數(shù)據(jù)庫為例,說明C++Builder5中連接數(shù)據(jù)庫操作的具體過程:(1)在控制面板中使用ODBCAdminstrator配置驅(qū)動程序和數(shù)據(jù)源。(2)使用C++Builder5中的BDEAdminstrator建立數(shù)據(jù)庫別名,根據(jù)所用數(shù)據(jù)庫類型配置相應(yīng)的數(shù)據(jù)庫驅(qū)動程序和數(shù)據(jù)庫連接參數(shù)。(3)在應(yīng)用程序設(shè)計中使用TDatabase,TSession(也可不用)和TTable或TQuery數(shù)據(jù)庫訪問控件,并在對象查看器(ObjectInspector)的屬性頁(Properties)和事件頁(Events)設(shè)置相應(yīng)的屬性和事件。(4)使用數(shù)據(jù)源控件(TDataSourece)連接數(shù)據(jù)訪問控件,并使用數(shù)據(jù)感知控件連接數(shù)據(jù)源控件,實現(xiàn)對數(shù)據(jù)庫中的數(shù)據(jù)顯示和操縱,達(dá)到與用戶交互的目的。2基于ado組件的數(shù)據(jù)庫連接1ado對象模型ADO的全名為ActiveDataObject,是Microsoft為了解決通用企業(yè)數(shù)據(jù)存取需求提出的解決方案UDA(UniversalDataAccess)之一。此方案包括ADO、OLEDB和ODBC,其中ADO是建立在OLEDB之上的提供較高級的數(shù)據(jù)庫應(yīng)用程序開發(fā)接口模型,它實現(xiàn)了一系列COM接口,通過數(shù)據(jù)提供者(DataProvider)和數(shù)據(jù)使用者(DataConsumer)來實現(xiàn)廣義的數(shù)據(jù)存取。ADO對象模型定義了一組可編程的自動化對象,它有6種對象,4種集合。6種對象是:Connetion、Command、Paramter、RecordSet、Fiedld和Property;4種集合為:Fields、Properties、Parameters和Errors。ADO對象模型如圖4所示。ADO的實際數(shù)據(jù)存取操作是通過OLEDB驅(qū)動程序訪問數(shù)據(jù)庫的,因此ADO適用于各種Client/Server應(yīng)用系統(tǒng)和基于Web的應(yīng)用,特別適用于一些腳本語言中數(shù)據(jù)庫訪問操作。利用ADO訪問數(shù)據(jù)庫的示意圖5如下。2tadorecodfig總體概述從圖4可以看出,使用最多的是三種對象:Connection、RecordSet和Command。Connection對象用于建立與數(shù)據(jù)庫服務(wù)器或其它數(shù)據(jù)庫的連接,在C++Builder5中對應(yīng)于TADOConnection控件;RecordSet對象主要用于獲取、保存、修改從數(shù)據(jù)庫得到的查詢結(jié)果,在C++Builder5中對應(yīng)于TADORecodSet控件;Command對象主要用于保存或發(fā)送需要反復(fù)執(zhí)行的查詢語句或服務(wù)器上存儲過程調(diào)用,在C++Builder5中對應(yīng)于TADOCommand控件。除TADOConnection為專門的連接數(shù)據(jù)庫控件外,TADORecordSet和TADOCommand也單獨支持對數(shù)據(jù)庫的連接。此外數(shù)據(jù)集控件TADODataSet、TADOTable、TADOQuery也多支持與數(shù)據(jù)庫的連接。TADOTable控件用于單一的表訪問;TADOQuery控件實現(xiàn)用SQL語句對數(shù)據(jù)庫表的查詢;TADODataSet控件是通過設(shè)置CommandText屬性命令串對數(shù)據(jù)源進(jìn)行操作,它不支持不返回結(jié)果集的DML語句,如delete、insert、updata等,要使用這些語句,選擇TADOCommand或TADOQuery控件。各ADO控件在數(shù)據(jù)庫應(yīng)用體系結(jié)構(gòu)中的位置如圖6所示。3數(shù)據(jù)庫添加功能的實現(xiàn)在C++Builder5中,ADO控件實質(zhì)上是一種數(shù)據(jù)訪問控件,許多ADO控件自身能實現(xiàn)數(shù)據(jù)庫的連接,也可以設(shè)置其Connection屬性為一個TADOConnection控件名,而在TADOConnection控件中設(shè)置連接屬性,連接屬性也可用代碼在運行期間設(shè)置?,F(xiàn)具體說明ADO控件連接數(shù)據(jù)庫的操作過程:(1)在數(shù)據(jù)庫應(yīng)用程序中,使用ADO訪問控件。實現(xiàn)簡單的表操作或查詢,可以使用TADOTable或TADOQuery;更一般地,可以使用TADODataSet控件;只控制數(shù)據(jù)庫的連接可使用TADOConnection控件;實現(xiàn)復(fù)雜的表操作或查詢,可以使用TADOCommand、TADORecordSet控件。(2)設(shè)置ADO訪問控件的ConnectionString屬性:點擊屬性欄中省略號,出現(xiàn)配置窗口,選“UseConnectionString”,按Build鈕,在接下來的窗口中選擇數(shù)據(jù)提供者,按Next鈕,選擇數(shù)據(jù)庫的路徑和文件名,點擊測試連接按鈕,測試成功后,點“確定”鈕。也可以在程序運行中動態(tài)配置,其代碼為:(3)如要對數(shù)據(jù)庫進(jìn)行操作可利用SQL語句設(shè)置CommandText屬性或SQL屬性及其它一些操作。(4)使用數(shù)據(jù)源控件(TDataSource)連接ADO訪問控件,并使用數(shù)據(jù)感知控件(如TDBGrid)來實現(xiàn)對數(shù)據(jù)庫中的數(shù)據(jù)顯示和操縱,達(dá)到與用戶交互目的。3ado與bre開發(fā)的比較從以上的分析中我們可以看到,BDE控件和ADO控件在連接數(shù)據(jù)庫時有本質(zhì)的不同,具體表現(xiàn)為:(1)從連接過程來看,BDE是通過BDE引擎以及ODBC來實現(xiàn)數(shù)據(jù)庫的連接,而ADO是通過OLEDB提供者直接與數(shù)據(jù)庫相連,因而ADO控件提供了一種避開BDE數(shù)據(jù)庫引擎直接與數(shù)據(jù)庫相連的方法。(2)從編程效率來看,由于BDE控件需要配置BDE數(shù)據(jù)庫引擎和ODBC數(shù)據(jù)源,這種方法不但復(fù)雜煩瑣,而且由于參數(shù)內(nèi)容不一,配置時令人感到無所適從,不宜把握,因而編程效率低;而ADO提供簡單易操作的數(shù)據(jù)庫連接,并具有高度的靈活性,它可以使用相同的編程模式連接到不同的數(shù)據(jù)提供者,而不管給定提供者的特定特性,因而編程效率高。(3)從連接速度來看,由于OLEDB驅(qū)動程序的運行性能比ODBC驅(qū)動程序高,加上BDE控件又通過BDE數(shù)據(jù)庫引擎來連接數(shù)據(jù)庫,所以BDE控件的連接速度不如ADO控件。(4)從內(nèi)存占用率來看,使用ADO控件的內(nèi)存占用率明顯地比BDE控件低。(5)從連接的數(shù)據(jù)庫類型來看,ODBC本身是以SQLServer、Oracle等關(guān)系型數(shù)據(jù)庫作為訪問

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論