BDE
是Inprise公司的資料庫引擎
BDE(Borland Database Engine)是Inprise公司的資料庫引擎,它結合了SQL Links允許程序員通過它能夠連接到各種不同的資料庫。BDE是BORLAND 資料庫引擎的縮寫,它是用來驅動資料庫的,就像ODBC一樣。同樣的DBASE表可以用BDE驅動,也可以用ODBC驅動。
要開發資料庫應用程序首先要解決數據源的問題,那麼什麼是數據源呢?簡單來講數據源就是實實在在的數據,通常是各種數據表。
有了數據源我們就有了開發程序的依據,然而一般情況下應用程序並不能直接和數據源打交道,必須通過某些中介,這些中介被稱為資料庫驅動器,通常每一種資料庫都有至少一種資料庫驅動器,如: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區別
與BDE不同ADO是Microsoft推出的新一代數據訪問規範,在Delphi6中它的地位等同於一個和BDE並列的數據引擎。
雖然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 的后三點優勢,它還是通用的資料庫訪問技術, 並得到了廣泛的支持, 使用範圍廣, 升級和維護比較方便。