• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        Delphi中數據文件路徑的管理

        Delphi中數據文件路徑的管理

        更新時間:2022-05-06 文章作者:未知 信息來源:網絡 閱讀次數:

        Delphi中的Table控件(Component)和Query控件都有一個DatabaseName屬性。可以用DatabaseName屬性來指定該控件所引用的數據表的路徑。有兩種方法可以為屬性DatabaseName設置路徑:第一種方法是直接輸入數據表所在路徑,另一種方法是使用數據庫別名(Alias)。在Delphi中,數據庫別名是在數據庫引擎(BDE)中建立的,一個別名對應一個文件路徑。可以這樣為別名下定義:別名是對文件路徑的映射,是文件路徑的簡稱。因此,在屬性DatabaseName中使用數據庫別名和使用文件路徑實質都是一樣的,它們都作為查找數據表的根(Root)路徑。但是,在數據庫應用程序的設計中,如果涉及到的Table控件和Query控件比較多的話,那么使用別名來引用文件路徑就十分高效、方便,并且不容易出差錯。原因是顯而易見的:一方面,別名可以在列表中直接選取而不必像文件路徑那樣從鍵盤上輸入;另一方面,別名可以設置得很簡短,即使從鍵盤錄入也比較快捷。因此,筆者建議要多使用數據庫別名而少使用文件路徑。

          另外,在Table控件的屬性TableName和Query控件的SQL語句中,都可以包含數據表的路徑信息。因為Query控件和Table控件的情況十分相似,所以下面只對Table控件進行說明。這種路徑信息既可以是一個完整的路徑,也可以是一個完整路徑的后面部分。比如對Table控件的屬性TableName賦值時,可以把C:DelphiDemosDataCustomerDB賦給它,也可以把DataCustomerDB賦給它。

          在實際應用中,我們可以把Table控件的屬性DatabaseName和屬性TableName結合起來使用。把屬性DatabaseName中的路徑作為根路徑,把屬性TableName中的不完整路徑(如果有的話)作為子路徑。把這兩個路徑結合起來就是訪問到數據表的一個完整的路徑。比如,假設在路徑C:DelphiDemosData下存在數據表CustomerDB,把Table控件的屬性DatabaseName指定為C:DelphiDemosData,然后把屬性TableName指定為CustomerDB,就可以訪問數據表CustomerDB了。如果屬性DatabaseName指定為C:DelphiDemos,要想訪問數據表CustomerDB,只要把屬性TableName指定為dataCustomerDB就行了。有時候這二者并不同時起作用。例如,如果屬性TableName中包括了完整的路徑,那么屬性DatabaseName中的路徑就不起任何作用了。又如,如果屬性DatabaseName中沒有指定任何路徑,而屬性TableName中的路徑又是不完整的,如DataCustomerDB,那么應用程序運行時的當前路徑就作為根路徑。為了便于程序移植,筆者有兩點建議:
          1、通常,只需要在屬性DatabaseName中指定數據表的路徑,而在屬性TableName中不必包括路徑信息。
          2、一般情況下,不要在屬性TableName中指定完整的路徑。

          下面就來介紹一下如何提高數據庫應用程序的移植性。
          數據庫應用程序的移植是一個重要的問題。因為在數據庫應用程序中要訪問數據庫或數據表,就要涉及到數據文件的路徑。一般來說,數據庫應用程序開發完成后要移植到其它機器上使用,因此數據庫應用程序運行時的數據文件的路徑很可能和開發時的不同。所以必須對數據文件的路徑進行有效的管理,以便于系統的移植。下面介紹三種管理數據文件路徑的方法。
          1、把數據文件建立在應用程序所在目錄的子目錄下。具體過程為:
          (1)為了設計起來方便,在設計時可以使用數據庫別名,且該數據庫別名指向應用程序所在路徑。把子路徑名加上數據表名字之后賦給Table控件的屬性TableName。
          (2)在發行應用程序前,把所有的Table控件或Query控件的屬性Active都置為False,刪除屬性DatabaseName中的所有字符(即置空)。
          在缺省情況下,應用程序運行時的當前目錄是應用程序所在的目錄。如果在應用程序中沒有調用ChDir等過程改變當前目錄的話,那么就不必執行第三步,否則進行第三步的處理。
          (3)在使用到Table控件和/或Query控件的窗體的創建(OnCreate)事件中,把應用程序所在路徑賦給該窗體中的每一個Table控件和Query控件。具體的形式如下所示:
          Table對象(或Query對象)DatabaseName:=ExtractFilePath(ApplicationExeName);

          2、利用配置文件存放數據庫路徑
          此方法是在應用系統安裝或第一次運行時把數據庫路徑信息寫入配置文件,以后運行時把路徑信息從配置文件中讀出。配置文件的讀寫利用類TIniFile(Delphi1.0和Delphi3.0) 、類TRegIniFile(Delphi 3.0/4.0)和類TRegistry(Delphi3.0/4.0)所提供的方法來實現。各個方法具體的用法請查閱Delphi聯機幫助。本方法的基本思路為:
          (1)為了設計方便,在設計時可以使用數據庫別名。
          (2)同1的步驟(2),但必須進行第三步的處理。
          (3)同1的步驟(3)類似。即,在窗體的創建事件中把數據庫路徑賦給該窗體中的每一個Table控件和Query控件,用形式化語言描述如下:
          Table對象(或Query對象)DatabaseName:=配置文件記錄中的數據庫路徑。

          3、利用數據庫別名存放數據庫路徑
          在設計時使用數據庫別名。在應用系統安裝或第一次運行時利用系統對象Session在BDE中建立與設計時相同的別名,使別名指向相應的數據庫路徑。下面的代碼說明了如何建立名字為“FDB”的別名,它的數據庫路徑為d: est,數據庫類型為Paradox。
          Session.ConfigMode:=cmAll;
          Session.AddStandardAlias(′FDB′,′d: est′,′PARADOX′);
          Session.SaveConfigFile; {保存新建立的別名}

          注:在Delphi1.0中Session對象不具有第三種方法中所用到的屬性和方法。以上三行代碼在Delphi3.0/4.0下調試通過。

          從上面的討論可以看出,方法三實現起來最簡單,其次是方法一,最后是方法二。筆者認為,如果應用系統是用Delphi3.0/4.0開發的,那么應盡量使用方法三。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲ts人妖网站| 亚洲精品韩国美女在线| 亚洲欧洲无卡二区视頻| 1000部拍拍拍18勿入免费凤凰福利| 亚洲国产成人高清在线观看| 亚洲色图视频在线观看| 最近免费2019中文字幕大全| 久久久婷婷五月亚洲97号色| 亚洲欧美日韩久久精品| 国内自产少妇自拍区免费| 亚洲日韩国产精品乱| 噜噜噜亚洲色成人网站∨| 91精品免费观看| 亚洲一区二区三区在线观看蜜桃| 在线a免费观看最新网站| 国产成人亚洲精品| 爽爽日本在线视频免费| 亚洲三级电影网址| jizz18免费视频| 91香蕉视频免费| 国产亚洲人成网站在线观看不卡| 久久国产精品国产自线拍免费| 亚洲av片劲爆在线观看| 日本特黄特色AAA大片免费| 在线免费中文字幕| 亚洲精品无码人妻无码| 亚洲一区二区三区在线视频| 久久免费视频网站| 亚洲一区二区三区高清在线观看| 免费欧洲毛片A级视频无风险| 可以免费观看的一级毛片| 三级网站在线免费观看| 日本视频一区在线观看免费| 亚洲国产三级在线观看| 人妻无码一区二区三区免费 | 亚洲Av无码专区国产乱码DVD | 日韩在线a视频免费播放| 亚洲日本视频在线观看| 国产成人无码免费视频97| 2020天堂在线亚洲精品专区| 亚洲国产精品国产自在在线|