在這一章裡我們主要介紹Delphi的數據訪問部件的層次結構、多部件之間的關系、部件的屬性、方法、事件以及各部件的應用。這些部件包括:
● TSession部件
● 數據集部件(TTable和TQuery)
● TDatasource部件
● 字段對象TField
● 字段編輯器的使用
● TReport部件和TBatchMove部件
我們對這些部件的屬性、方法和事件進行一般性的描述,讀者在實際使用Delphi開發應用程序時,還可以通過聯機幫助獲得有關部件更詳細的信息。
15.1 Delphi數據訪問部件的層次結構
Delphi提供了強大的開發數據庫應用程序的能力,它給用戶提供了大量的數據訪問部件。以方便程序設計人員開發數據庫應用程序。這些部件中,有些部件繼承了另一些部件的屬性、方法和事件,也就是說多部件之間存在著繼承和被繼承的關系,各部件的這種關聯便構成了一個層次結構
圖15.1 Delphi數據訪問部件的層次結構
TSession是全局性的部件,在應用程序運行時,它自動地建立,在設計階段和運行過程中它是一個不可見的部件。
TDatabase部件是為開發客戶/服務器數據庫應用程序時,設置登錄的數據庫的有關參數的,它在數據訪問部件頁上。
TDataset部件是不可見的,TTable和TQuery部件是由它派生而來的,這兩個部件一般被稱為數據集部件,它們在數據訪問部件頁上。
TDatasource部件是連接數據集部件和數據浏覽部件的橋梁,它在數據訪問部件頁上。
TFields部件對應於數據庫表中的實際字段,它既可以在應用程序的運行過程中動態地生成也可以在程序設計階段用字段編輯器創建。它是不可見的部件,在程序中我們可以通過TField部件來訪問數據庫記錄的各個字段值。
15.2 Tsession部件及其應用
TSession部件一般用得較少,但它對於一些特殊的應用是很有用的,在每一個數據庫應用程序運行時Delphi自動地創建一個TSession部件。程序設計人既不能看見該部件也不能顯示地創建一個TSession 部件,但是我們可以在應用程序中全局性地使用TSession部件的屬性、方法。
15.2.1 TSession部件的重要屬性及作用
TSession部件的許多重要屬性是用於控制數據庫應用程序與數據庫的連接的,在一個應用程序中,可以全局性地設置TSession的有關屬性值,對與之相連接的磁盤上的數據庫進行控制。TSession部件主要有下列屬性:
Database屬性:是TSession中可以進行連接的所有數據庫的數據庫名字列表,這些數據庫的名字常常是實際數據庫的別名,包括數據庫的路徑、用戶名、用戶登錄口令等參數。
DatabaseCount屬性:是TSession中可以進行連接的所有數據庫的數量,它是一個整數。
KeepCounnections屬性:是一個布爾型屬性,用它說明應用程序是否保持與一個非活動數據庫的連接。因為對於一個數據庫,當該數據庫中沒有相應的數據集部件(TTable或TQuery)被打開時,該數據庫將自動地變成非活動的數據庫。缺省情況下,KeePcounnections的值是True,就是說應用程序總是保持著與數據庫的連接,即使數據庫變成了非活動的數據庫時,也是如此。如果將KeepConnections屬性設置成False,那麼當數據庫由活動狀態變成非活動狀態時,應用程序與該數據庫的連接也隨之中斷。
NetFileDir屬性:說明BDE網絡控制文件的路徑名。
PrivateDir屬性:說明存取臨時文件的路徑名。
15.2.2 TSession部件的方法:
TSession部件中的大部分方法是用於向用戶提供與應用程序相連接的數據庫的信息,如數據庫的名字及別名,數據庫中的表名以及數據庫引擎BDE的有關參數等,在設計數據庫應用程序時,想要獲取有關數據庫的信息,調用TSession部件的下列方法,將會大大簡化程序的設計。
GetAliasNames方法:調用該方法,我們可以獲得數據庫引擎BDE中定義的數據庫別名。
GetAliasParams方法:該方法主要用於獲取我們在BDE中定義數據庫別名時所說明的參數值,如BDE所在的目錄路徑以及實際名稱等。
GetDatabaseNames 方法:調用該方法可以幫助我們獲得當前應用程序可以進行連接的所有數據庫的名字,數據庫的名字是用戶使用BDE工具定義的實際數據庫的別名。
GetDriverNames方法:數據庫引擎BDE可以與多種數據庫管理系統相連接,如客戶/服務器數據庫管理系統Oracle、Sybase以及本地數據庫管理系統dBASE,Paradox等,BDE與每一種數據庫管理系統進行連接時,都有相應的驅動程序,而且這些驅動程序都可以選擇地安裝。通過調用GetDriverNames方法。我們可以獲得當前BDE安裝的數據庫驅動程序的名字。
GetDriverParams方法:BDE的數據庫驅動程序中包含著多個參數,如支持的民族語言、DBMS的版本號、文件塊大小等,對於服務器上的DBMS,還有數據庫服務器的名字等等。
GetTableNames方法:因為每一個數據庫都是由多個數據庫表組成的,我們通過說明數據庫名,然後調用GetTableNames方法,便可以獲得該數據庫中全部的數據庫表的名字。
上述這些方法在調用時都需要一個字符串列表作為參數,而且都返回一個字符串列表的值。
TSession部件還有一個叫DropConnections的方法用於控制應用程序與數據庫的連接,當調用DropConnections方法時,應用程序與所有的數據庫的連接將會切斷。