?? delphi中數據文件路徑的管理 (2001年4月5日).txt
字號:
Delphi中數據文件路徑的管理 (2001年4月5日)
網友更新 分類:數據庫 作者: winfit(推薦) 推薦:winfit 閱讀次數:254
(http://www.codesky.net)
--------------------------------------------------------------------------------
delphi中的Table控件(Component)和Query控件都有一個DatabaseName屬性。可以用DatabaseName屬性來指定該控件所引用的數據表的路徑。有兩種方法可以為屬性DatabaseName設置路徑:第一種方法是直接輸入數據表所在路徑,另一種方法是使用數據庫別名(Alias)。在Delphi中,數據庫別名是在數據庫引擎(BDE)中建立的,一個別名對應一個文件路徑。可以這樣為別名下定義:別名是對文件路徑的映射,是文件路徑的簡稱。因此,在屬性DatabaseName中使用數據庫別名和使用文件路徑實質都是一樣的,它們都作為查找數據表的根(Root)路徑。但是,在數據庫應用程序的設計中,如果涉及到的Table控件和Query控件比較多的話,那么使用別名來引用文件路徑就十分高效、方便,并且不容易出差錯。原因是顯而易見的:一方面,別名可以在列表中直接選取而不必像文件路徑那樣從鍵盤上輸入;另一方面,別名可以設置得很簡短,即使從鍵盤錄入也比較快捷。因此,筆者建議要多使用數據庫別名而少使用文件路徑。
另外,在Table控件的屬性TableName和Query控件的SQL語句中,都可以包含數據表的路徑信息。因為Query控件和Table控件的情況十分相似,所以下面只對Table控件進行說明。這種路徑信息既可以是一個完整的路徑,也可以是一個完整路徑的后面部分。比如對Table控件的屬性TableName賦值時,可以把C:\Delphi\Demos\Data\CustomerDB賦給它,也可以把Data\CustomerDB賦給它。
在實際應用中,我們可以把Table控件的屬性DatabaseName和屬性TableName結合起來使用。把屬性DatabaseName中的路徑作為根路徑,把屬性TableName中的不完整路徑(如果有的話)作為子路徑。把這兩個路徑結合起來就是訪問到數據表的一個完整的路徑。比如,假設在路徑C:\Delphi\Demos\Data下存在數據表CustomerDB,把Table控件的屬性DatabaseName指定為C:\Delphi\Demos\Data,然后把屬性TableName指定為CustomerDB,就可以訪問數據表CustomerDB了。如果屬性DatabaseName指定為C:\Delphi\Demos,要想訪問數據表CustomerDB,只要把屬性TableName指定為data\CustomerDB就行了。有時候這二者并不同時起作用。例如,如果屬性TableName中包括了完整的路徑,那么屬性DatabaseName中的路徑就不起任何作用了。又如,如果屬性DatabaseName中沒有指定任何路徑,而屬性TableName中的路徑又是不完整的,如Data\CustomerDB,那么應用程序運行時的當前路徑就作為根路徑。為了便于程序移植,筆者有兩點建議:
1、通常,只需要在屬性DatabaseName中指定數據表的路徑,而在屬性TableName中不必包括路徑信息。
2、一般情況下,不要在屬性TableName中指定完整的路徑。
下面就來介紹一下如何提高數據庫應用程序的移植性。
數據庫應用程序的移植是一個重要的問題。因為在數據庫應用程序中要訪問數據庫或數據表,就要涉及到數據文件的路徑。一般來說,數據庫應用程序開發完成后要移植到其它機器上使用,因此數據庫應用程序運行時的數據文件的路徑很可能和開發時的不同。所以必須對數據文件的路徑進行有效的管理,以便于系統的移植。下面介紹三種管理數據文件路徑的方法。
1、把數據文件建立在應用程序所在目錄的子目錄下。具體過程為:
(1)為了設計起來方便,在設計時可以使用數據庫別名,且該數據庫別名指向應用程序所在路徑。把子路徑名加上數據表名字之后賦給Table控件的屬性TableName。
(2)在發行應用程序前,把所有的Table控件或Query控件的屬性Active都置為False,刪除屬性DatabaseName中的所有字符(即置空)。
在缺省情況下,應用程序運行時的當前目錄是應用程序所在的目錄。如果在應用程序中沒有調用ChDir等過程改變當前目錄的話,那么就不必執行第三步,否則進行第三步的處理。
(3)在使用到Table控件和/或Query控件的窗體的創建(OnCreate)事件中,把應用程序所在路徑賦給該窗體中的每一個Table控件和Query控件。具體的形式如下所示:
Table對象(或Query對象)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -