在開發數據庫軟件的過程中由於實際需求不斷發生變化數據庫結構也將隨之改變這會給文檔更新工作帶來很大困難如果能夠用軟件自動獲得數據庫的結構信息並生成報告文件將減輕軟件的文檔工作量
TSession對象
為了管理應用程序與數據庫系統的多重連接Delphi提供了TSession對象Delphi中的數據訪問對象(Data Access Object)均包含Session屬性用來指向與之對應的TSession對象如果應用程序需要同時建立對數據庫系統(尤其是BDE數據庫)的多個連接就必須定義多個TSession對象屬於不同連接的數據訪問對象的Session屬性不能相同否則將無法同時使用
在數據庫應用程序運行時Delphi會自動生成一個缺省TSession對象名字為Session數據訪問對象在缺省情況下均與之相連
TSession對象除了自動管理數據庫連接外還能夠取得數據庫信息下面就分別介紹這方面的函數
獲取數據庫別名信息
TSession對象在獲取數據庫別名方面有個函數/過程
以下是引用片段
procedure TSessionGetAliasNames(List: TStrings);
procedure TSessionGetAliasParams(const AliasName: string; List: TStrings);
function TSessionGetAliasDriverName(const AliasName: string): string;
GetAliasNames用來獲得所有的BDE別名名稱結果保存在變量List中;GetAliasParams用來獲得某個BDE別名的參數結果保存在變量List中;GetAliasDriverName用來取得某個BDE別名使用的數據庫驅動程序的名字
這個函數不太復雜就不多加介紹了一般情況下我們只需要使用GetAliasNames即可
獲取數據表信息
在知道了數據庫別名後如何取出該別名對應數據庫中包含的數據表呢?可以使用TSession對象中的 GetTableNames過程該過程描述如下
以下是引用片段
procedure TSessionGetTableNames(const DatabaseName Pattern: string;
各參數意義如下
DatabaseName數據庫別名;
Pattern過濾器用來過濾結果可以使用通配符比如*dbft* 等如果為空字符串則表示不需要過濾;
Extensions為布爾量表示是否顯示數據表擴展名該參數只對DBF和Paradox數據庫有效;
SystemTables為布爾量表示是否顯示系統數據表;
List為返回結果結果按字母順序排序
[] []
From:http://tw.wingwit.com/Article/program/Delphi/201311/8542.html