BDE

BDE

BDE(Borland Database Engine)是Inprise公司的資料庫引擎,它結合了SQL Links允許程式設計師通過它能夠連線到各種不同的資料庫。BDE是Delphi資料庫功能的樞紐部分,所有資料庫存取使用的例程,均需要通過BDE來處理,因此BDE是連線應用程式和資料庫的橋樑。

基本介紹

要開發資料庫應用程式首先要解決數據源的問題,那么什麼是數據源呢?簡單來講數據源就是實實在在的數據,通常是各種數據表。

有了數據源我們就有了開發程式的依據,然而一般情況下應用程式並不能直接和數據源打交道,必須通過某些中介,這些中介被稱為資料庫驅動器,通常每一種資料庫都有至少一種資料庫驅動器,如:Access,Foxpro,dBase等資料庫都有自己的資料庫驅動器,有了這些資料庫驅動器,為了編程的方便起見,接著就產生了管理這些資料庫驅動器的引擎,有了資料庫引擎,程式設計師在編程時就不要為訪問不同的資料庫驅動來費腦筋了,只要按照統一的方法訪問資料庫引擎,而讓資料庫引擎去完成不同資料庫驅動器的轉換,資料庫引擎就像一個公共接口,為訪問資料庫提供了統一的方法。

BDE是(Borland Database Engine)寶蘭數據引擎的縮寫,它不僅能訪問本地的不同資料庫,還可以將套用從本地上傳到客戶機-伺服器系統,而且有很高的效率。

能訪問的數據分類:

一,本地數據。

二,客戶機-伺服器體系的異地數據。

工作原理

BDE 是Delphi資料庫功能的樞紐部分,所有資料庫存取使用的例程,均需要通過BDE 來處理,因此BDE是連線應用程式和資料庫的橋樑。它是由幾個DLL 模組組成的,各模組分別負責處理一些資料庫的相關工作。如果機器上裝有其它版本或重複的BDE ,那么BDE是按照下列的搜尋順序來載入BDE 的DLL 檔案( Idapi32. dll) 並將BDE 初始化的:

1) 搜尋當前目錄(當前目錄與應用程式的啟動目錄不一定不同);如果沒有找到該檔案,將繼續;

2) 搜尋註冊表HKEY-LOCAL - MACHINE \ SOFTWARE\ Borland \ Database Engine \ DLLPATH \ xxxxx中所對應的項目;如果沒有找到該檔案,將繼續;

3) 按照裝載庫檔案的先後順序來進行搜尋:即應用程式的當前啟動目錄→System目錄→Windows 目錄→PATH 環境參數中所設定的路徑。

裝載驅動程式DLL 檔案的先後順序,除了第一步的搜尋路徑要換為Idapi32.dll 這個檔案被載入的目錄之外,其它基本跟上面一樣。而且BDE為一些DLL 檔案預留了某些首選記憶體地址,如果相應的BDEDLL 檔案不能被載入那些特定的首選記憶體地址時,系統將出錯誤信息並使初始化失敗。

BDE是一個過程化的資料庫訪問接口,通過它可以建立資料庫別名(DataBasealias)。使Delphi訪問資料庫別名中的各種數據表。

BDE在Delphi中扮演著重要角色。如果Delphi應用程式提出一個對資料庫的請求,這個請求一定要通過BDE提交個資料庫管理系統,資料庫管理系統回響應用程式的請求,把查詢結果通過BDE傳送到Delphi應用程式。對於只在單機上使用的本地資料庫而言,Delphi通過BDE來控制資料庫中數據的讀寫。對於後台遠端的資料庫系統而言。BDE尚需通過SQLLINKS或ODBC(Open DataBase ConnectivityDrivers)才能讀取資料庫的內容。

區別

與ADO區別

ADO簡介

與BDE不同ADO是Microsoft推出的新一代數據訪問規範,在Delphi6中它的地位等同於一個和BDE並列的數據引擎。

ADO實際上和ActiveX技術聯繫緊密,而ActiveX又和OLE,COM等技術有很密切的關係。

雖然ADO的功能比BDE比起來弱一些,但和BDE相比ADO有一些重要的優勢,比如:

ADO將會內制在從Windows2000開始Microsoft新出的所有作業系統中,單就這一點就足以給其他的數據訪問方式畫上問號.

在Delphi7中提供了對ADO的全力支持,提供了很多ADO組件,還增加了一些新的欄位類型如:WideString,GUID,Variant,interface,IDispatch等.

ADO是面向各種數據的層次很高的接口,它提供了強大的數據訪問功能,可以訪問的數據對象有:

1>關係資料庫中的各種數據;

2>非關係型資料庫,如層次型資料庫,網狀資料庫等;

3>電子郵件與檔案系統;

4>文本與圖象,聲音;

5>客戶事務對象.

區別

一、利用BDE數據引擎實現資料庫連線

BDE 連線資料庫有如下幾步:

1) 給資料庫建立別名。BDE使用的核心是BDE別名的使用。別名相當於資料庫的邏輯名稱, 隱含了資料庫存儲物理地址和網路資料庫的連線。要想讓套用

程式通過別名和資料庫建立連線, 首先要在BDEAdministrator 中給資料庫建立別名。

2) 配置相關的參數。

說明: Host Name 是你自己的主機的名字, 我這裡是lisan, Server Name 是SQL 伺服器的名字, 我這裡是Lisan\lisan, DataBaseName 是你在SQL 伺服器下建立的資料庫的名字, UserName 的名字是Sa, 相應會出現對話框輸入密碼。這是你以後連線資料庫時用的用戶名和密碼。連線好資料庫之後,那些屬性的字型自動變成黑體了。資料庫連線好之後, 以後的操作就不再連線,只需要輸入正確用戶名和密碼即可成功的連線上。之後只需要對個別的情況與個別的表進行連線。

3) 選擇數據訪問組件。資料庫組件主要有數據訪問組件和數據控制組件。在數據模組窗體上添加數據訪問組件TTable、TQuery、TDataSource 來實現訪問資料庫的功能,還要對各組件的屬性進行設定。

4) 選擇數據控制組件。在窗體上添加數據控制組件DBGrid、TDBEdit 等組件, 也要對屬性進行設定。設定組件DBGrid、TDBEdit。該組件一般只需設定為DataSource 屬性, 用於和組件DataSource 建立聯繫,從而設為 Data- Source1。很顯然, 組件DataSource 是用於組件Table1 和DBGrid 之間建立聯繫, 即建立一個數據通道為了簡化編程。通過上面的四步,就可以完成了資料庫的連線。

二、運用ADO技術實現資料庫的連線

Delphi 應用程式中可以使用原生ADO 對象和ADO Express 組件實現與SQL Server 2000 資料庫的連線。在此以我的畢業課題“小型服裝公司銷售管理信息系統的設計與實現”為實例來介紹ADO Express 組件實現與SQL Server 2000 資料庫的連線。Delphi中除連線類型外其他的ADO組件都有一個ConnectionString 屬性。首先必須配置該屬性才能連線到SQL Server 2000 伺服器。連線到銷售管理系統資料庫的多個ADO 組件的ConnectionString 屬性相同, 因此可以只配置一個ConnectionString 屬性, 而通過配置其他ADO 組件的ConnectionString 屬性來共享同一連線, 從而提高對SQL Server 2000 的訪問效率。銷售管理系統資料庫存放於名為lisan\lian 的伺服器上, 他的資料庫名稱為lv,登錄用戶為lisan, 登錄密碼為lisan。具體操作如下:

ADOConnection1.Connection

String:=’Provider=SQLOLEDB.1;

Password=lisan;

Persist SecurityInfo=True;

User ID=lisan;

Initial Catalog=lv;

Data Source=lisan\lian’

ADOConnection1 為ADO Connection 類(組件)的一個對象。其中Provider= SQLOLE DB.1 指明OLEDB 提供者, User ID=lisan 和Password=lisan指明登錄SQLServer 的用戶帳號和口令, PersistSecurity Info =True使該連線組件自動存儲用戶登錄口令, Initial Catalog=lv 指明了銷售管理系統資料庫的名稱(別名),DataSource=lisan\lian 指明了資料庫所在伺服器名稱。

另外也可以通過連線嚮導來實現連線, 雙擊ADOConnection1 對象即見所示的連線嚮導。此連線嚮導可以通過兩種方法來連線:

1) 選擇UseData Link File, 通過Browse 按鈕可

連線一個外部後綴為udl 的檔案( 此檔案可通過新建空文本檔案而後更改後綴來實現,然後可以打開此檔案來設定外部的連線屬性) , 這樣ADOConnection1.Connection String 的信息將保存於外部。這一種連線的缺點是udl 檔案沒有被加密, 如果採用保存密碼的方式, 通過寫字板即可看到裡面的密碼。

2) 選擇UseConnection String, 單擊Build 按鈕彈出對話框。

在此輸入ADOConnection1.Connection String 的信息就可對資料庫連線。這時可以通過TADOQuery組件訪問銷售管理系統數據表, 設定TADOQuery 類對象ADOQuery1 的Connection 屬性為ADOConnection1,然後通過設定其SQL 屬性來指定操作, 例如要從資料庫返回服裝基本信息:

ADOQuery1.SQL:=‘SELECT*FROM 服裝基本信息表’;

用戶還可以為TADOQuery 類的SQL 屬性指定其他SQL 描述, 從而實現過濾複雜的數據查詢。

組件介紹

簡單介紹一下Delphi中常用的資料庫組件。

1. 數據訪問組件(Data Access Component)

數據訪問組件在Delphi組件面板的Data Access組件頁上可以找到。這裡我們應當注意:Table、Query和Storedproc三個控制項,它們稱為“數據集組件”,用於和資料庫連線。學習者可以將這些控制項視為“虛擬”的資料庫,對它們的操作就可以認為是對資料庫的操作。 (1)DataSource控制項是數據集組件和數據控制組件的連線媒介。數據控制組件是用戶運算元據庫中數據的界面,只有通過DataSource控制項才能和數據集組件連線,從而對數據進行顯示、修改、維護等操作。 (2)Table控制項是通過資料庫引擎——BDE來存取資料庫中的數據的。通過BDE將用戶對資料庫的操作(如添加、刪除、修改等)傳遞給資料庫。 (3)Query控制項是利用SQL(Structured Query Language,結構化查詢語言)通過BDE來運算元據庫的,和Table控制項完成的功能相似,它只是採用了SQL來實現。 (4)Storedproc控制項是通過BDE對伺服器資料庫進行操作的,常用於客戶/伺服器(C/S)結構的資料庫應用程式。 (5)DataBase控制項一般用於建立遠程的資料庫伺服器——客戶/伺服器結構的資料庫應用程式和資料庫之間的連線。 (6)Session控制項是用於控制資料庫應用程式和資料庫連線的,主要用於複雜功能的實現,例如:多執行緒資料庫程式設計。

2. 數據控制組件(Data Control Component)

數據控制組件也可以稱為數據顯示組件或數據瀏覽組件。它們的主要功能是與數據訪問組件相配合,提供給用戶一個對數據進行瀏覽、編輯等操作的界面。數據控制組件在組件板上的DataControl頁上。它們主要有:DBGrid控制項、DBNavigator控制項、DBText控制項、DBEdit控制項、DBMemo控制項、DBImage控制項、DBListbox控制項、DBComboBox控制項、DBCheckBox控制項、DBRadioGroup控制項、DBLookupListBox控制項、DBLookupComboBox控制項、DBRichEdit控制項、DBCtrlGrid控制項、DBChart控制項等。 此外,還有一些組件與資料庫有關。例如,Decision Cube是一組主要用於數據統計工作的控制項,以表格或圖形等直觀的方式表達統計結果。QReport是用來輸出報表的控制項,但是,根據經驗來看,此控制項不太適合中國人報表的習慣。此組件是Borland公司購買而來,性能不是太好,所以使用的不是很多。有一些第三方控制項提供的報表控制項很好用,也有一些國人自己製作的報表控制項,很適合中國人的習慣。 還有一個組件頁是ADO(ActiveX Data Objects),主要是使用微軟的OLE DB功能對資料庫伺服器中的數據進行訪問和操作。其主要優點是易於使用、高速度、低記憶體支付和存儲空間占用較少。ADO支持用於建立基於客戶端/伺服器和基於Web的應用程式。ADO同時具有遠程數據服務(RDS)功能,通過RDS可以在一次往返過程中實現將數據從伺服器移動到客戶端應用程式或Web頁、在客戶端對數據進行處理然後將更新結果返回伺服器的操作。ADO逐漸流行起來,ADO本身也很複雜,微軟有專門的幫助檔案來說明如何使用ADO,學習者有興趣可以找相關資料進一步學習。

軟體優勢

Delphi 中兩種連線資料庫的方法:BDE 數據引擎和ADO 技術。相比而言, BDE 數據引擎有以下四個優勢: 1)其應用程式運行效率非常高。2)目前BDE 是與Delphi 整合得最好的資料庫訪問引擎,它是通過提供安裝相應驅動程式的方式來支持相應資料庫訪問能力, 因此Delphi資料庫應用程式能訪問多種類型的資料庫, 而不是局限於一種資料庫,從而Delphi對分散式資料庫應用程式編寫有很強的支持能力, 並且對於有些資料庫, 只能使用BDE 引擎才能訪問。3)BDE 以提供組件的方式支持資料庫編程, 編程非常直觀、簡單。4)BDE 對資料庫應用程式(特別是在網路環境下) 安裝過程中的配置管理非常方便。

雖然BDE 有很多的優勢, 但是Borland公司對BDE 已經進入了後期維護的階段, 停止了對BDE 的更新開發。相反, ADO 就具有了廣闊的發展前景, 雖然ADO 的執行效率可能有些不如BDE,但是ADO 不光具有BDE 的後三點優勢,它還是通用的資料庫訪問技術, 並得到了廣泛的支持, 使用範圍廣, 升級和維護比較方便。

相關詞條

相關搜尋

熱門詞條

聯絡我們