為了有一些“啞元”(dummy)數(shù)據(jù),在類型(Type)表中填上以下4個記錄:“游戲(Game)”,“數(shù)據(jù)庫(Database)”,“互聯(lián)網(wǎng)(Internet)”,“圖形(Graphics)”。在選擇存儲在應(yīng)用程序表(applications)中的應(yīng)用程序類型時,這些值將被使用。 接下來,在作者表(Authors)中增加一行:'Delphi Guide'、'delphi.guide@about.com'、 'http://delphi.about.com'。最后,在應(yīng)用程序表(Applications)中加上一行:'Zoom'、'Zooming the Destop'、'Delphi Guide'、'Graphics'、10、0、02/20/2001,同時讓最后一個字段(照片)為空。
怎樣處理這些“空”(blank)的數(shù)據(jù)庫......在本教程的余下章節(jié)將進(jìn)行說明。
第二章 連到數(shù)據(jù)庫,用ADO? BDE?
第一節(jié) Delphi數(shù)據(jù)庫連通性
像在上一章中所顯示的那樣,數(shù)據(jù)庫是以一定的結(jié)構(gòu)格式存儲數(shù)據(jù)的一個或多個表的集合。這些表包含以行、列的形式表現(xiàn)的數(shù)據(jù)。當(dāng)一個數(shù)據(jù)庫包含一個或多個表時,這些表通常擁有分散但相關(guān)的數(shù)據(jù)。MS access、Interbase、SQL Server用一個文件表示完整的數(shù)據(jù)庫(MS Access是*.mdb文件)。另一方面,Paradox和dBase由代表索引和表關(guān)系的單獨的表和文件定義。描述Paradox數(shù)據(jù)庫的所有文件通常存放在一個目錄中。當(dāng)然,Delphi可以以這兩種方式工作。
用Delphi,我們可以連到不同類型的數(shù)據(jù)庫:本地或C/S(遠(yuǎn)程服務(wù)器)數(shù)據(jù)庫。本地數(shù)據(jù)庫存放在本地驅(qū)動器或本區(qū)域網(wǎng)中。遠(yuǎn)程數(shù)據(jù)庫服務(wù)器通常位于遠(yuǎn)端機(jī)器。本地數(shù)據(jù)庫的類型有Paradox、dBase和MS Access。C/S數(shù)據(jù)庫有MS SQL Server、Interbase或Oracle。
本地數(shù)據(jù)庫通常被稱為單層數(shù)據(jù)庫。單層數(shù)據(jù)庫對任何變化如:編輯數(shù)據(jù)、插入記錄、或刪除記錄-立即實現(xiàn)。單層數(shù)據(jù)庫在表所容納的數(shù)據(jù)量大小和應(yīng)用程序所支持的用戶量的多少上有限制。當(dāng)數(shù)據(jù)庫包含幾個表之間復(fù)雜關(guān)系的信息時,或當(dāng)客戶端數(shù)量增加時,你需要使用二層或多層應(yīng)用程序??蛻舳藨?yīng)用程序在本地機(jī)上運行;應(yīng)有程序服務(wù)器多運行在服務(wù)器上,而數(shù)據(jù)庫可能位于另一個服務(wù)器。多層體系的思路是客戶端程序可以非常小,因為應(yīng)用程序服務(wù)器可以完成很多工作。這可以使你編寫所謂瘦客戶端應(yīng)用程序。
當(dāng)我們用Delphi編寫數(shù)據(jù)庫應(yīng)用程序時,我們需要用一些數(shù)據(jù)庫引擎訪問數(shù)據(jù)庫的數(shù)據(jù)。數(shù)據(jù)庫因請允許你把焦點集中在你所訪問的是什么數(shù)據(jù),而不是怎樣訪問它。從第一版開始,Delphi就為數(shù)據(jù)庫開發(fā)人員提供了BDE(Borland Database Engine)。除了BDE外,從第五版開始,Delphi提供對微軟的ADO數(shù)據(jù)庫接口的支持。
本教程將重點關(guān)注用MS Access本地數(shù)據(jù)庫開發(fā)單層數(shù)據(jù)庫應(yīng)用程序。
第二節(jié) Borland 數(shù)據(jù)庫引擎(BDE)
BDE是所有Borland產(chǎn)品—包括Delphi和C++Builder—時共同的數(shù)據(jù)訪問層。BDE是一個DLL(Dynamic Link Libraries)和工具的集合。它的漂亮之處在于所有的數(shù)據(jù)處理對于開發(fā)者都是透明的。BDE帶有一套驅(qū)動,可以使你的應(yīng)用程序與多種不同類型的數(shù)據(jù)庫進(jìn)行交流。這些驅(qū)動把高層次數(shù)據(jù)庫命令(如open或post)和任務(wù)(記錄鎖定或SQL結(jié)構(gòu))轉(zhuǎn)化為特殊的數(shù)據(jù)庫類型所需要的特定命令,這些特殊的數(shù)據(jù)庫有:Paradox、dBase、MS Access或任何ODBC數(shù)據(jù)源。BDE API (Application PRogramming Interface 應(yīng)用程序編程接口)包含200多個過程和函數(shù),它們可以從BDE單元獲得。幸運的是,你幾乎根本不需要直接調(diào)用這些程序。相反地,你通過VCL(譯者加:Visual Component Library可視組件庫)的數(shù)據(jù)訪問組件—位于組件面板的數(shù)據(jù)訪問頁(Data Access)使用BDE。為了訪問特殊的數(shù)據(jù)庫,應(yīng)用程序只需知道數(shù)據(jù)庫的別名(Alias)就可以訪問該數(shù)據(jù)庫的所有數(shù)據(jù)。別名在BDE管理器(BDE Administrator)中建立,它指定了驅(qū)動器的參數(shù)和數(shù)據(jù)庫的位置。BDE自帶一個數(shù)據(jù)庫驅(qū)動集,可以訪問大范圍不同類型的數(shù)據(jù)元。標(biāo)準(zhǔn)的BDE驅(qū)動包括Paradox、dBase、MS Access、ASCII文本。當(dāng)然,任何ODBC驅(qū)動器也能通過ODBC管理器(ODBC Administrator)被BDE使用。
使用BDE訪問數(shù)據(jù)庫的Delphi應(yīng)用程序需要為應(yīng)用程序分發(fā)BDE。當(dāng)配置應(yīng)用程序的BDE時,你必須使用InstallShield Express或別的Borland指定的安裝程序。
BDE作為數(shù)據(jù)庫引擎有其優(yōu)點也有其缺點。但是,在本教程中將不討論為什么和什么時候你應(yīng)該(或不應(yīng)該)使用BDE方法而不是某些非BDE技術(shù)。
既然本教程是討論ADO/MSAccess的,那么余下部分將集中在這種非BDE的數(shù)據(jù)庫方法。
2002年12月22日
新聞熱點
疑難解答
圖片精選