第十六章 C++ Builder 使用BDE元件开发资料库程式.ppt

上传人:s****8 文档编号:67190609 上传时间:2022-12-24 格式:PPT 页数:91 大小:830.50KB
返回 下载 相关 举报
第十六章 C++ Builder 使用BDE元件开发资料库程式.ppt_第1页
第1页 / 共91页
第十六章 C++ Builder 使用BDE元件开发资料库程式.ppt_第2页
第2页 / 共91页
点击查看更多>>
资源描述

《第十六章 C++ Builder 使用BDE元件开发资料库程式.ppt》由会员分享,可在线阅读,更多相关《第十六章 C++ Builder 使用BDE元件开发资料库程式.ppt(91页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、第十六章 使用BDE元件開發資料庫程式 在經過前一章的說明後,相信讀者對資料庫的架構與連結方式已經有初步的了解,所以本章將透過C+Builder提供的BDE連結元件來帶領讀者開發屬於自己的資料庫程式,讓你感受C+Builder對資料庫程式開發的強力支援。大綱16-1.第一個資料庫應用程式16-2.BDE的連結設定16-3.Query元件的使用16-4.Database元件的使用16-5.開發進階資料庫程式16-1.第一個資料庫應用程式【操作實例16-1】第一個資料庫程式Step 1.新增一個專案並在專案的表單上加入DataSource、DBGrid、Table三個元件。這些元件分別位在Data

2、 Access、Data Controls和BDE頁次中,如下圖所示:Data Access頁次頁次Data Controls頁次頁次BDE頁次頁次DataSource元件元件DBGrid元件元件Table元件元件16-1.第一個資料庫應用程式表單畫面顯示如下 16-1.第一個資料庫應用程式Step 2.設定Table元件的屬性值 設定DatabaseName為BCDEMOS。該名稱為C+Builder安裝時所預設提供的BDE連結,此名稱連結到Program FilesCommon FilesBorland SharedData目錄下的Paradox類型資料庫檔。在TableName屬性值中設

3、定所欲連結的資料表名稱,透過下拉選單的方式我們選擇employee.db這個資料表名稱 2.22.116-1.第一個資料庫應用程式Step 3.設定DataSource元件的屬性值設定DataSet 屬性值為Table1。其中Table1為表單中Table元件的名稱。Step 4.設定DBGrid元件的DataSource屬性值DataSource1。DataSource1為Step 3中DataSource元件的名稱。16-1.第一個資料庫應用程式Step 5.回到Table元件的屬性設定,並設定Active屬性為True設定Active屬性為True後,employee.db資料表中的資料

4、將自動顯示在DBGrid元件中。這種不需執行程式即可看到資料內容的效果為C+Builder Data Control元件的特色。執行結果第一個資料庫程式完成了第一個資料庫程式完成了!16-1.第一個資料庫應用程式這樣的程式是否夠簡單呢?不需要任何程式片段即完成一個資料庫程式。所有效果都能透過元件拖拉和屬性設定來完成的原因在於連結資料庫和顯示資料內容部分的瑣碎細節都已經被C+Builder所提供的元件處理掉了。整個程式的執行流程為Table元件利用BDE連結方式和BCDEMOS建立起連線。讀取employee.db資料表的內容形成一個資料集合。接著再透過DataSource元件使Table內的資

5、料集合得以傳到DBGrid元件。DBGrid元件便根據傳來的資料集合做一個呈現的動作而得到我們所要的效果。16-1.第一個資料庫應用程式接著對之前的程式稍作修改,在表單上再新增一個DBNavigator元件,並設定其DataSource屬性為DataSource1,則再次執行後即可利用DBNavigator元件所提供的按鈕來上下移動紀錄指標。除此,DBNavigator元件還提供新增紀錄、刪除紀錄等功能。16-1-1.DataSource元件在上一節我們使用到DataSource元件作為連結Table和DBGrid元件的一個管道,然而該元件在資料庫程式中並非必要。底下我們介紹DataSourc

6、e元件的真正用途和使用時機:提供資料集合和Data Control(資料感知)元件溝通的管道,使得Data Control元件能顯示和編輯資料集合中的資料,而Data Control元件因為專門顯示資料集合中的資料,所以也稱為Data-aware資料感知元件。因此對於不使用Data Control元件來顯示資料集合的程式,便不需要DataSource元件。連結Master/Detail主從關係的兩個資料集合,例如在我們顯示employee資料表時,只能顯示每個員工的所屬部門編號(EmpNo欄位),如果要再根據這個部門編號去顯示部門名稱時,就必須根據每個員工的部門編號去department資料表

7、中找尋對應的部門名稱。此時,employee和department兩個資料表就是所謂的Master/Detail主從關係,而這樣的應用也必須透過DataSource來達成。16-1-1.DataSource元件常用屬性屬性 功能 AutoEdit 決定使用者是否可以直接在DBGrid中修改資料。當設定為True時,使用者可以直接對DBGrid中的資料進行修改的動作;反之,設定為False便無法直接在DBGrid中進行資料的修改。DataSet 用來設定所要連結的資料存取元件,像之前範例中我們便是設定Table1作為連結的DataSet。Enabled 設定資料感知元件是否和DataSource

8、元件相連,當Enabled值設為True時,所有和DateSource相連的資料感知元件都可以顯示DataSource所傳遞的資料,反之,則無法顯示資料,縱使資料存取元件的Active屬性設為True。Name 設定DataSource元件的名稱,當你的DataSource元件不只一個時,為了往後的維護方便,建議取個有意義的名稱來區別這些不同的DataSource元件。16-1-2.Table元件Table為使用BDE連結下的一個資料存取元件,也是最簡單的資料存取元件,你可以透過設定所要連結的資料庫名稱(DatabaseName屬性)和資料表名稱(TableName屬性)在不使用任何SQL語法

9、的情形下直接從資料庫中抓取資料表的資料。對於簡單的應用來說,使用Table元件是最快速的方法。16-1-2.Table元件常用屬性:屬性功能屬性功能Database 設定所要連結的資料庫名稱,可以利用下拉選單直接點選。Tablename 設定所要檢視的資料表名稱。若Database屬性已完成設定,可於Object Inspector(物件檢視器)中透過下拉選單的方式直接對資料表進行選取的動作。Active Active屬性設定Table元件是否抓取資料表中的資料。當設定值為True時,該元件即根據你所設定的資料庫和資料表名稱去擷取其中的資料,縱使你尚未執行該程式。Bof 判斷檢視資料表的紀錄指

10、標是否移至資料的最前端,也就是第一筆資料的位置。Eof 判斷紀錄指標的位置是否為資料集合中的最後一筆。當Bof和Eof皆為True時表示資料集合為空集合。16-1-2.Table元件屬性功能屬性功能ReadOnly 設定該資料集合中的資料是否為唯讀狀態。當設定為True時,使用者無法對其中的資料進行修改,反之,則允許使用者編輯該資料集合內的資料。CanModify 設定是否允許使用者進入編輯模式。如果為True時,代表使用者可以進入編輯模式對資料進行修改,而該屬性的值會隨著ReadOnly的屬性值而變動,也就是當ReadOnly設為True時,CanModify屬性會自動調整為False。Re

11、cordCount RecordCount記錄資料集合中資料的筆數,所以我們可以透過該屬性來了解整個回傳資料中的資料數目。FieldCount FieldCount記錄每筆資料的欄位數,因此透過RecordCount和FieldCount屬性的使用可以完整讀取所有資料表中的內容。RecNo 回傳紀錄指標目前在資料集合中的位置。假設目前檢視的資料為資料集合中的第五筆資料,則當程式碼呼叫RecNo時,回傳值即為5。16-1-2.Table元件欄位編輯器:設定Table元件的欄位 雖然Table元件只需設定Database和Tablename就可以發揮它的基本功用,但是若要對Table元件作些變化的

12、應用則必須了解整個Table元件的架構。當Table元件讀取選定的資料表時,並不是把整個資料表上的所有欄位當作一個整體,而是以個別的Field(欄位)元件來記錄每個欄位內的資料,所以很顯然的我們可以根據這些分開的Field元件來對每個欄位進行設定,包括各別欄位的顯示格式和顯示標題等。欄位的設定會影響到所有以這個Table元件為資料集合的其他元件,包括資料感知元件。直接使用Table元件時,該元件是使用預設的欄位設定。雙擊選取的Table元件圖示後,即可開啟欄位編輯器對個別欄位進行設定。16-1-2.Table元件欄位編輯器在第一次彈出的欄位編輯器中,因為預設值的關係我們看不到任何的欄位項目。此

13、時,透過單擊滑鼠右鍵的方式來新增編輯器中的欄位,在這裡我們點選【Add all fields】(新增所有欄位)來對資料表格中的所有欄位進行設定,整個圖示如下圖所示:單擊滑鼠右鍵新增所有欄位16-1-2.Table元件欄位編輯器當我們點選欄位編輯器中的任何欄位時,便可以在Object Inspector(物件檢視器)中看到這些欄位的個別屬性設定狀況(如下圖),而這些屬性的作用如下表說明:16-1-2.Table元件屬性功能屬性功能Alignment 欄位資料的對齊方式。DisplayFormat 設定欄位內資料的表示方式。例如加上千元分隔號的屬性設定值為#,#。DisplayLabel 設定該欄

14、位的標題名稱,預設值為該欄位名稱。當設定好特定的欄位名稱後,所有使用該資料集合的元件亦會直接採用此新設定的欄位名稱。EditMask 當進入編輯模式時,設定該欄位的編輯遮罩,也就是可以限制使用者輸入的資料格式或是資料內容。FieldName 設定該欄位和資料表格連結的欄位,也就是指定該欄位從資料表中的哪個欄位抓取資料。欄位編輯器常用屬性16-1-2.Table元件欄位編輯器常用屬性因此針對不同欄位皆可以設定不同的屬性值,提供變化的彈性,而對於不想顯示的欄位名稱,除了設定Visible屬性為False來達成外,其實亦可直接從欄位編輯器中刪除該欄位名稱來達成同樣的效果。屬性功能屬性功能ReadOn

15、ly 個別設定每個欄位的唯讀與否。Visible 設定個別欄位的顯示與否。若使用DBGrid資料感知元件進行資料呈現時,設定為False的欄位將不會出現在DBGrid元件的顯示畫面上。16-1-2.Table元件欄位編輯器的快速拖曳C+Builder的資料感知元件透過屬性的設定即可解決表單上資料顯示的問題,但是當資料表所要顯示的欄位一多或是使用的資料感知元件數目一多時,設定屬性就成了一件麻煩事。為此,C+Builder的欄位編輯器提供了非常好用的快速拖曳功能來簡化設定資料感知元件的動作,亦即允許程式設計師直接從欄位編輯器中拖曳所欲顯示的欄位至表單上,而C+Builder會自動根據欄位的屬性和內

16、容選取最適當的資料感知元件顯示欄位內容。使用方法如下頁圖示。16-1-2.Table元件欄位編輯器的快速拖曳選取所要的欄位直接往表單上拖曳即可。拖曳16-1-3.DBNavigator元件DBNavigator亦為Data Control(資料感知)元件,主要功用在於對資料集合內資料進行操作和維護的工作,其中的操作行為包括移動資料集合內的指標以達成顯示不同筆記錄的目的,諸如顯示資料的第一筆紀錄、下一筆紀錄和最後一筆紀錄等,而維護資料集合的工作則包括了新增資料、刪除資料和調整狀態等工作,所以可說是涵蓋了資料集合中所有常用的操作動作,而這個元件和其他感知元件最大的不同在於它本身並不提供顯示資料的功

17、能,所以必須搭配其他資料感知元件才能發揮它的功用,也因為它本身不負責顯示資料,所以該元件的外觀也和其他資料感知元件不甚相同,主要由十個不同功能的按鈕組成,如下圖顯示,這十個按鈕的功能由左至右介紹如下:16-1-3.DBNavigator元件按鈕名稱功能First 顯示資料集合中的第一筆記錄。Prior顯示目前紀錄的前一筆記錄。Next顯示目前紀錄的下一筆記錄。Last顯示資料集合中的最後一筆記錄。Insert在目前顯示的記錄前新增一筆記錄。Delete刪除現在顯示的記錄資料,並顯示下一筆的記錄。Edit變換資料集合為編輯狀態,以使現在顯示的記錄可以進行編輯的動作。Post將對目前記錄所作的修改

18、寫入資料集合中。Cancel取消對目前記錄所作的編輯動作,並使資料集合回到瀏覽狀態。Refresh重新抓取資料集合內的資料。16-1-3.DBNavigator元件常用屬性ConfirmDelete因為DBNavigator允許使用者對資料集合中的資料進行刪除的動作,為了避免誤刪的情形發生,DBNavigator提供了ComfirmDelete屬性用來設定當刪除資料時是否要出現確認的訊息。當設定為True時,會顯示確認訊息框供,反之則不會顯示任何確認訊息,預設值為True。確認訊息框16-1-3.DBNavigator元件DataSourceDataSource為所有資料感知元件皆要設定的屬性

19、,指向你程式中的DataSource元件。Flat該屬性的主要功能在美化DBNavigator元件所顯示的畫面,用來設定DBNavigator各按鈕的浮動效果。所謂的浮動效果是指按鈕平常內嵌在表單裡,當滑鼠游標移動到該按鈕時會出現突起來的效果。屬性值False為傳統的按鈕圖示,實際效果如下圖所示。Flat=FalseFlat=True16-1-3.DBNavigator元件Hints在DBNavigator元件上,由於並沒有文字說明來告知使用者每個按鈕的功能,所以常常會有不知按鈕功能的情形。此時,透過Hints屬性來設定提示訊息便可改善這個缺點,而該屬性本身亦提供了一組英文提示訊息,只要設定S

20、howHint屬性為True即可使用。當然,你亦可在物件檢視器中雙擊DBNavigator元件的Hints屬性開啟String List Editor來編輯屬於自己的提示訊息,如下圖所示:16-1-3.DBNavigator元件VisibleButton在一般的元件上,透過Visible屬性的設定來決定該元件在表單上的顯示與否,同樣的DBNavigator也不例外。只是,對於含有十個按鈕的DBNavigator元件來說,若是只能設定十個按鈕的同時顯示與否則顯得缺乏彈性,所以DBNavigator元件還提供了另外一個屬性來分別設定這十個按鈕的顯示與否,這個屬性便是VisibleButton。該屬

21、性包含十個子屬性,依序用來判斷DBNavigator元件上的各個按鈕顯示與否,當設定其中的一個子屬性值為True時便代表該子屬性所對應到的按鈕會顯示在整個畫面上,相反地設定False則不會顯示該按鈕,右圖為該VisibleButton屬性的設定畫面16-1-4.DBGrid元件於需要一次顯示資料表內多筆欄位和資料的使用者來說,DBGrid無疑是最好的選擇。常用屬性ColumnsDBGrid元件內預設的顯示欄位取決於DataSource屬性設定的DataSource元件所連結的資料集合。以DataSource元件連結到Table元件為例,則其顯示的欄位由Table元件透過欄位編輯器設定後決定,然

22、而,DBGrid元件在顯示欄位資料時,仍可透過Columns屬性來決定最後顯示的欄位。除此,Columns屬性亦能針對其內的每個欄位做更進一步的設定,包括顯示標題、欄位的背景顏色和顯示的字型等。只要在物件檢視器中按下Columns屬性或雙擊表單上的DBGrid元件透過彈出的對話框即可設定最後的顯示欄位與其顯示的格式。16-1-4.DBGrid元件Columns屬性設定步驟1.在彈出的對話框內按下滑鼠右鍵選擇【Add】新增欄位或【Add All Fields】新增所有欄位來決定DBGrid元件的顯示欄位。其中【Add All Fields】選項會自動載入所連結資料集合的所有欄位。16-1-4.D

23、BGrid元件2.單擊對話框內的欄位,透過物件檢視器對每個欄位的細部屬性進行設定,包括所要顯示的資料集合欄位、背景顏色、字型和可讀與否等,如下圖所示:16-1-4.DBGrid元件每個欄位內的屬性設定說明如下屬性功能Alignment 設定欄位在顯示資料時的對齊方式。ButtonStyle 設定儲存格(Cell)被被點選時所顯示的按鈕類型。當PickList屬性內含有資料時,每次點選儲存格(Cell)便會出現下拉選單的按鈕。預設值為cbsAuto自動偵測。Color 設定整個欄位的背景顏色。FieldName 設定欄位顯示的資料為資料集合中的哪個欄位。PickList 設定是否允許在每個儲存格

24、(Cell)中顯示下拉選單。Title 對顯示欄位的標題進行設定,包括標題名稱、標題名稱和標題的字型等。Visible 決定該欄位資料是否顯示在DBGrid中。16-1-4.DBGrid元件FieldCount透過這個屬性回傳顯示的欄位數目。FixedColor設定DBGrid固定部分的顏色,預設值為clBtnFace,其中的固定部分指的是如標題列等不負責顯示資料集合內資料的部分。SelectedField傳回目前被使用者點選的欄位資料,為一個TField的型態,而在TField型態下,我們可以得到欄位的名稱和目前指標所指的欄位資料等。TitleFontTitleFont設定整個欄位的標題字型

25、,當然你也可以在每個欄位的屬性中分別對不同欄位字型進行設定。DBGrid1-SelectedField-FieldName/傳回目前選取的欄位名稱DBGrid1-SelectedField-AsString/傳回目前指標所指到的欄位資料 16-1-4.DBGrid元件Options設定DBGrid的細部選項,每個選項說明如下。屬性功能dgEditing 設定DBGrid元件可否執行編輯資料集合內資料的動作。dgAlwaysShowEditor 當點選欄位時,設定是否要自動進入編輯模式,不過前提是dgEditing選項要設定為True。dgTitle 設定標題列的顯示與否。dgIndicator

26、 指定是否要在點選的該筆資料前端顯示箭頭符號。dgColumnResize 設定是否允許使用者利用滑鼠對欄位的寬度進行調整。dgColLines 設定是否顯示行與行間的分隔線。dgRowLines 設定是否顯示列與列間的分隔線。dgTabs 設定是否可以使用Tab鍵和Shift Tab鍵瀏覽整個DBGird元件內的資料。16-1-4.DBGrid元件屬性功能dgRowSelect 設定是否允許整列選取,也就是點選DBGrid中的資料時是以整筆資料選取的狀態顯示,當設定為True時,則dgEditing和dgAlwaysShowEditor選項的設定將會被忽略。dgAlwaysShowSelec

27、tion 當設定為True時,DBGrid元件無論何時皆會有資料呈現選取的狀態,縱使DBGrid元件不是目前作用中的元件。dgConfirmDelete 設定當對資料進行刪除時,是否要顯示提示對話框。dgCancelOnExit 設定當使用者在新增資料狀態但卻尚外輸入資料時,離開DBGrid元件是否要對該筆資料進行輸入的動作。設為True將可避免空白資料的輸入。dgMultiSelect 設定是否允許在DBGrid元件裡選取多筆資料。16-1-4.DBGrid元件DBGrid元件常用事件OnCellClick當使用者按下DBGrid元件中的儲存格(Cell)時觸發,而且會傳入該儲存格所對應的欄

28、位,為一TColumn型別,所以我們可利用傳入的欄位來得到一些像是欄位名稱與儲存格內容的訊息,用法如下:void _fastcall TForm1:DBGrid1CellClick(TColumn*Column)if(Column-FieldName=EmpNo)/如果按下的儲存格欄位為EmpNo Edit1-Text=Column-Field-AsString;16-1-4.DBGrid元件OnColEnter當點選某個欄位或使用Tab鍵進入某個欄位時所觸發的事件。和前面介紹的OnCellClick不同的是:OnColEnter亦會偵測鍵盤的事件,這也是為什麼透過tab鍵的移動也會觸發此事件

29、。簡言之,OnCellClick是滑鼠按鍵的事件,而OnColEnter則是進入DBGrid欄位就就會觸發的事件。若我們使用滑鼠點選DBGrid內的儲存格時,兩個事件都會被觸發,其中OnColEnter事件的觸發時機是在按下滑鼠的那一刻,而OnCellClick則是在滑鼠按鍵被釋放時觸發,兩者之間仍有稍微的不同。示範程式如下所示:Void _fastcall TForm1:DBGrid1ColEnter(TObject*Sender)/使用SelectedField來偵測作用中的欄位if(DBGrid1-SelectedField-FieldName=EmpNo)Edit1-Text=DBGr

30、id1-SelectedField-AsString;16-1-4.DBGrid元件OnDrawColumnCell在DBGrid元件呈現資料於表單畫面時觸發。DBGrid元件顯示資料的方式是透過Canvas屬性來設定顯示的內容,就如同畫家在畫布上作畫,只是我們畫的東西以資料集合的資料為主,所以除了印上單純的文字資料外,你當然可以在這畫面上塗上一些不同的圖案和顏色。16-2.BDE的連結設定在15章我們曾經提過BDE連結的缺點就是必須對BDE進行額外的連結設定,而上一節我們使用C+Builder預設提供的BCDEMOS作為Table元件連結的資料庫,也因此並未觸及到BDE連結的設定。但是,倘若

31、我們需使用自己的DBMS或是資料檔時,設定BDE連結就成為必須的工作,所以本小節我們將介紹如何透過BDE Administrator設定屬於自己的BDE連結設定,以供諸如Table元件、Query元件和Database元件等來使用。16-2-1.BDE Administrator元件透過BDE進行連線必須先開啟所謂的BDE Administrator進行設定,而這個程式可經由【開始】【程式集】開啟,畫面如下所示 左邊Database頁次中顯示的內容為BDE Administrator現有的資料庫名稱,又稱為資料庫別名(Database Alias),但該名稱其實僅為一個對應的連結而非遠端資料庫

32、的真實名稱 右邊則顯示了該組連結內的屬性設定,至於屬性的內容則隨資料庫不同而有所不同 若要在BDE Administrator內對連結進行修改或新增的動作,則請在Database頁次中按下滑鼠右鍵進行點選即可 16-2-2.Paradox連結設定在BDE Administrator內的Databases分頁中按下滑鼠右鍵點選【NEW】建立一個新的資料庫連結,並在彈出的驅動程式對話框中選擇STANDARD,如下兩圖游標所示:Step 1Step 2按下【OK】選定資料庫別名使用的驅動程式後,便會出現該資料庫別名的設定畫面16-2-2.Paradox連結設定在Database頁次內設定該資料庫別名

33、的名稱,並在右邊的PATH欄位內設定資料庫存放的路徑,該路徑為一含有副檔名為db檔案的資料夾,當然你也可以在此指定網路上的存放位置,像是要連到Cherry電腦上的DB資料夾,則PATH欄位可寫成CherryDB,如此就可以省去必須先設定網路磁碟機的麻煩,同時請注意Default Driver是否為PARADOX,因為Standard驅動程式的類型還包括dBase、FoxPro,畫面如下所示:16-2-2.Paradox連結設定完成上面的設定後,按下滑鼠右鍵選擇【Apply】來儲存該資料庫別名的設定,如下圖所示。至此新增連結設定即告完成,你亦可使用Database Desktop工具來檢查設定是

34、否正確,而Database Desktop的使用方法請參考後面章節所述。16-2-3.Microsoft SQL Server的連結設定的連結設定 在建立Microsoft SQL Server的資料庫連結前,請先安裝Microsoft SQL Server的Client端程式(附於Microsoft SQL Server安裝程式內),接著開啟BDE Administrator程式並在Database頁次中新增一個資料庫別名,選擇使用的驅動程式類型為MSSQL,如下圖所示:按下【OK】進入驅動程式的參數設定畫面 16-2-3.Microsoft SQL Server的連結設定的連結設定 對下面

35、的參數進行設定的動作:DATABASE NAME:設定遠端Microsoft SQL Server的資料庫名稱,強烈建議避免設定所謂的系統資料庫以確保Microsoft SQL Server的正常運作。SERVER NAME:設定遠端Microsoft SQL Server的電腦名稱或是IP 位址以供驅動程式找尋該台電腦。例如Microsoft SQL Server主機名稱為Cherry,而IP為10.113.1.189,則Server Name的設定可以為Cherry或是10.113.1.189;不過,透過電腦名稱的找尋方式僅限同一網域下的電腦。USER NAME:該欄位用來輸入登入遠端SQ

36、L Server的使用者帳號,也可以省略待連結時再行輸入。設定好上述參數後按下【Apply】以儲存該連結設定,接著便可雙擊該資料庫別名以測試Microsoft SQL Server連結是否正確,當Definition頁次中的欄位名稱字體變為粗體時,表示連結正確,否則將會帶出錯誤訊息。16-2-4.ODBC連結連結Microsoft Access的設定的設定 由於BDE本身所提供的Microsoft Access驅動程式只支援Microsoft Access 97使用的Jet Engine,所以若用Microsoft Access 2000以後的版本將會發生連結錯誤的情形,而改善這種問題的辦法就

37、是使用ODBC來取代BDE提供的驅動程式,方法如下所述。首先必須進入ODBC的設定畫面:在Windows 98/Me環境下位於【控制台】內;在Windows 2000環境下位在【控制台】【系統管理工具】裡;在Windows XP環境下則位在【控制台】【效能及維護】【系統管理工具】內 16-2-4.ODBC連結連結Microsoft Access的設定的設定雙擊ODBC圖示後,會顯示如下圖的對話框,在使用者資料來源名稱使用者資料來源名稱這個頁次中按下【新增】按鈕以新增一個資料來源。接著,選擇Microsoft Access Driver(*.mdb)作為連結使用的驅動程式,該驅動程式提供和Mic

38、rosoft Access資料庫的連結,如下所示。16-2-4.ODBC連結連結Microsoft Access的設定的設定接著對Microsoft Access的連結細節進行設定,包括設定此資料來源的名稱和所存取的資料庫(如下圖所指)。所謂的資料來源名稱用來識別不同的資料庫連結設定,所以你可以選擇一個好記的資料來源名稱以供自己辨識。下圖中就以AccessODBC作為資料來源的名稱,以後只要透過AccessODBC的資料來源指定,就可以讀取到該資料來源所指定的資料庫內容。16-2-4.ODBC連結連結Microsoft Access的設定的設定按下資料庫的【選取】按鈕即可設定所要存取的資料庫,

39、在此我們以Borland提供的範例檔為例,路徑為C:Program FilesCommon FilesBorland SharedDatabcdemos.mdb,設定完成後按下【確定】按鈕關閉對話框。回到上層的視窗按下【確定】按鈕即完成整個ODBC的設定。此時開啟BDE Administrator將可發現剛才所設定的資料來源名稱已出現在左邊的Database頁次中,代表BDE Administrator已經自動抓取到透過ODBC所設定的資料來源了 16-2-4.ODBC連結連結Microsoft Access的設定的設定現在你可以在BDE Administrator內用滑鼠雙擊該資料來源名稱以

40、測試是否能正確連結,並在彈出登入訊息時直接按下【OK】即可。說明:Access預設的身分認證機制允許匿名使用者的登入,所以在登入訊息出現時可以直接以空白做為輸入,或是使用Access預設的User Name登入。Access預設的User Name是Admin而Password則為空白。Definition頁次的粗體字代表著資料庫的連結成功 16-2-5.ODBC連結連結Oracle的設定的設定在設定ODBC前,請先安裝Oracle的Client端程式並完成相關的設定,以Oracle 8.1.7來說必須先設定Net 8。首先,和前一小節相同地透過ODBC資料管理員以新增一個使用者資料來源,只是

41、此時我們選擇Oracle ODBC Driver選項為使用的ODBC驅動程式,該選項為安裝Oracle Clinet端軟體後才會增加的驅動程式選項,除此之外,也可以選擇內附在ODBC管理員中的Microsoft ODBC for Oracle選項作為連結Oracle的驅動程式,不過即使使用Microsoft ODBC for Oracle驅動程式仍需安裝Client端程式。驅動程式選項如下圖所示。16-2-5.ODBC連結連結Oracle的設定的設定選定後按下【完成】按鈕進入設定驅動程式連結的對話框(右圖所示)。在Data Source Name欄位輸入一個代表該資料來源的名稱;在Servic

42、e Name欄位輸入你欲連結的資料服務名稱,這裡的服務名稱為之前在Net8 Configuration下所設定的服務名稱。如果當初設定Net8時使用預設的服務名稱,則該服務名稱即等於遠端資料庫的Global Database Name。輸入完成後按下【OK】鍵完成整個Oracle的ODBC連結設定,而這個新增的連結也會出現在BDE Administrator的Databases頁次中。16-2-6.ODBC連結連結MySQL的設定的設定MySQL為目前網路上最常使用的資料庫,配合PHP和Apache的使用幾乎成為了網路資料庫的鐵三角組合,而這股MySQL風潮也因為該產品便宜、安裝容易和效能不差

43、慢慢普及到一般的資料庫程式應用上,並且發展出不同的作業系統版本。所以若是讀者想以MySQL作為後端的資料庫,或許可以考慮安裝Win32版本下的MySQL進行練習,不過在BDE Administrator內的設定卻必須靠ODBC的幫助來進行連結,因為BDE Administrator本身並沒有提供MySQL的驅動程式。因此,在進行設定前請至MySQL的網站下載MyODBC以安裝MySQL的ODBC驅動程式,網址為http:/ 16-2-6.ODBC連結連結MySQL的設定的設定在資料來源中選定了sample-MySQL後,按下右邊的【Setup】按鈕,將會帶出如右圖的對話框:Window DSN

44、 Name欄位為你想用來識別這個資料來源的名稱,預設值為sample-MySQL。MySQL host欄位填入該資料來源的電腦名稱或是IP位址。MySQL database name欄位指定你所要開啟的資料庫。User和Password欄位填入登入MySQL時所使用的使用者名稱和密碼。倘若你所使用的Port並非MySQL預設的3306,則在Port欄位中輸入使用的Port。設定完成後按下【OK】確定,回到上層的對話框按下【Close】即完成整個ODBC驅動程式的安裝和設定。16-2-6.ODBC連結連結MySQL的設定的設定回到ODBC管理員內將可發現sample-MySQL已經出現在使用者資

45、料來源使用者資料來源名稱名稱的頁次中,而後面的驅動程式顯示為MySQL,代表著之前所設定的sample-MySQL資料來源已經安裝成功,另外,你也可以在驅動程式驅動程式頁次中看到新增加的MySQL驅動程式,如下圖所示。16-3.Query元件的使用Query和Table元件同樣具有連結資料庫存取資料的功能,不過Query元件是以SQL語法作為存取資料集合的根據,不像Table是以指定資料表的方式來處理,雖然如此,兩者在使用上還是有許多相似之處,尤其是在資料集合的處理上,而整個Query元件最重要的兩個屬性則為SQL和Database:其中SQL屬性決定Query元件使用的SQL語法;Datab

46、ase屬性則為資料存取元件必備的屬性。16-3-1.如何指定SQL語法既然SQL屬性為Query元件最重要的設定之一,如何指定SQL語法便顯得特別重要,雖然指定SQL語法沒有像Table元件中指定TableName那樣方便,但是當你熟悉SQL設定後便會深深覺得Query元件的好用,尤其是在多表格和多條件式的資料集合存取上更顯出它的使用彈性,而指定SQL屬性內容最簡單的方式為透過物件檢視器來設定。在物檢檢視器中選取Query元件,單擊SQL屬性即可彈出String List Editor對話框設定SQL語法。編輯SQL語法16-3-1.如何指定SQL語法除了事前透過物件檢視器設定SQL屬性外,也

47、可在程式片段中再對Query的SQL屬性進行設定,整個SQL屬性的設定過程不外乎清除、新增和指定,敘述如下:清除清除SQL屬性內的所有內容。當我們在程式裡指定SQL屬性值前,為了確保SQL屬性內不含任何之前設定的資料,所以常使用SQL-Clear()指令來清除之前SQL屬性內的資料。16-3-1.如何指定SQL語法新增清除SQL屬性的內容後便可透過Add方法對SQL屬性填入新的SQL語法,而新增加的內容將全部附加於原有的屬性值後,所以可透過多次的Add方法來完成SQL語法指定的工作,底下分兩次輸入來指定“選取選取1001號員號員工基本資料工基本資料”的SQL語法:指定除了使用SQL-Add()

48、來新增SQL語法內容外,也可直接使用SQL-Text指定SQL屬性的內容,這種設定方式的好處在於不需要執行額外的SQL-Clear()方法。Query1-SQL-Clear();/清除SQL語法Query1-SQL-Add(Select*from Employee.db);/選取所有員工資料Queyr1-SQL-Add(Where EmpNo=1001);Query1-SQL-Text=Select*from Employee.db where EmpNo=1001;16-3-2.如何執行SQL語法當透過SQL屬性指定所要執行的SQL語法後,接著便要對Query元件下執行的指令以傳遞SQL語法

49、至資料庫執行。在Query元件內執行SQL語法的指令分為Open和ExecSQL兩種:OpenOpen方法的執行適用於會回傳資料集合的SQL語法,也就是SelectFromWhere,執行後的效果相當於Active屬性設為True的作用。ExecSQL相對於Open會回傳資料集合,ExecSQL適合不會傳回任何資料集合的SQL語法使用,而這些不傳回資料集合的SQL語法包括了Insert、Delete、Update等。16-3-2.如何執行SQL語法為了加速SQL語法的執行效率,在SQL語法真正執行前,我們可以使用Prepare方法先送出該SQL語法的查詢內容讓遠端的資料庫可以先進行最佳化的處理

50、工作。建議讀者在執行SQL語法前皆能先執行Prepare來改善執行效率。Query1-SQL-Clear();/清除SQL語法Query1-SQL-Add(Select*from Employee.db);/選取所有員工資料Queyr1-SQL-Add(Where EmpNo=1001);Query1-Prepare();/預備查詢內容Query1-Open();/傳回資料集合的用法 Query1-SQL-Clear();/清除SQL語法/設定所有員工調薪1,5倍Query1-SQL-Add(Update Employee.db set Salary=Salary*1.5);Query1-SQ

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com