六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Delphi中數(shù)據(jù)文件路徑的管理

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

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

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

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

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

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

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

  從上面的討論可以看出,方法三實(shí)現(xiàn)起來最簡單,其次是方法一,最后是方法二。筆者認(rèn)為,如果應(yīng)用系統(tǒng)是用Delphi3.0/4.0開發(fā)的,那么應(yīng)盡量使用方法三。


主站蜘蛛池模板: 五月婷婷精品 | 色综合久久综合中文小说 | 日本高清视频一区二区 | 青娱乐国产在线视频 | 青青久在线视频 | 中文字幕一区二区三区四区五区人 | 天天躁夜夜躁狂狂躁综合 | 综合久久久久综合体桃花网 | 亚洲成a人片在线看 | 欧美一级特黄一片免费 | 无遮挡黄 | 青青视频在线播放 | 午夜男人网站 | 日日日操操操 | 日本五级床片全都免费播放 | 香蕉视频你懂的 | 天天狠天天天天透在线 | 日本欧美一区二区三区视频 | 色黄视频 | 午夜影院亚洲 | 深夜成人福利视频 | 欧美一区二区三区免费观看视频 | 日日摸日日干 | 深夜福利视频导航 | 亚洲精品中文字幕乱码 | 天堂网中文字幕 | 日本在线视频免费 | 五月婷婷六月丁香 | 一级做a免费观看大全 | 日本国产在线观看 | 一本到视频在线观看 | 亚洲第一网站在线观看 | 亚洲春色第一页 | 欧美特黄一级高清免费的香蕉 | 综合色视频 | 桃花岛在线播放免费观看 | 一级欧美 | 色综合久久久久久久久久久 | 日本高清观看视频 | 天天射夜夜操 | 欧洲大肥批 |