Delphi開發(fā)工具中如何訪問數(shù)據(jù)庫結(jié)構(gòu)

字號:

在開發(fā)數(shù)據(jù)庫軟件的過程中,由于實際需求不斷發(fā)生變化,數(shù)據(jù)庫結(jié)構(gòu)也將隨之改變,這會給文檔更新工作帶來很大困難。如果能夠用軟件自動獲得數(shù)據(jù)庫的結(jié)構(gòu)信息并生成報告文件,將減輕軟件的文檔工作量。
    1 TSession對象
    為了管理應(yīng)用程序與數(shù)據(jù)庫系統(tǒng)的多重連接,Delphi提供了TSession對象。Delphi中的數(shù)據(jù)訪問對象(Data Access Object)均包含Session屬性,用來指向與之對應(yīng)的TSession對象。如果應(yīng)用程序需要同時建立對數(shù)據(jù)庫系統(tǒng)(尤其是BDE數(shù)據(jù)庫)的多個連接,就必須定義多個TSession對象,屬于不同連接的數(shù)據(jù)訪問對象的Session屬性不能相同,否則將無法同時使用。
    在數(shù)據(jù)庫應(yīng)用程序運行時,Delphi會自動生成一個缺省TSession對象,名字為Session,數(shù)據(jù)訪問對象在缺省情況下均與之相連。
    TSession對象除了自動管理數(shù)據(jù)庫連接外,還能夠取得數(shù)據(jù)庫信息。下面就分別介紹這方面的函數(shù)。
    2 獲取數(shù)據(jù)庫別名信息
    TSession對象在獲取數(shù)據(jù)庫別名方面有3個函數(shù)/過程:
    Word-WRAP: break-word" bgColor=#f3f3f3>以下是引用片段:
    procedure TSession.GetAliasNames(List: TStrings);
    procedure TSession.GetAliASParams(const AliasName: string; List: TStrings);
    function TSession.GetAliasDriverName(const AliasName: string): string;
    GetAliasNames用來獲得所有的BDE別名名稱,結(jié)果保存在變量List中;GetAliasParams用來獲得某個BDE別名的參數(shù),結(jié)果保存在變量List中;GetAliasDriverName用來取得某個BDE別名使用的數(shù)據(jù)庫驅(qū)動程序的名字。
    這3個函數(shù)不太復(fù)雜,就不多加介紹了。一般情況下,我們只需要使用GetAliasNames即可。
    3 獲取數(shù)據(jù)表信息
    在知道了數(shù)據(jù)庫別名后,如何取出該別名對應(yīng)數(shù)據(jù)庫中包含的數(shù)據(jù)表呢?可以使用TSession對象中的 GetTableNames過程。該過程描述如下:
    以下是引用片段:
    procedure TSession.GetTableNames(const DatabaseName, Pattern: string;
    各參數(shù)意義如下:
    DatabaseName:數(shù)據(jù)庫別名;
    Pattern:過濾器,用來過濾結(jié)果,可以使用通配符。比如“*.dbf”,“t*” 等。如果為空字符串,則表示不需要過濾;
    Extensions:為布爾量,表示是否顯示數(shù)據(jù)表擴展名。該參數(shù)只對DBF和Paradox數(shù)據(jù)庫有效;
    SystemTables:為布爾量,表示是否顯示系統(tǒng)數(shù)據(jù)表;
    List:為返回結(jié)果,結(jié)果按字母順序排序。