CBuilder利用dbExpress开发资料库程式.ppt
《CBuilder利用dbExpress开发资料库程式.ppt》由会员分享,可在线阅读,更多相关《CBuilder利用dbExpress开发资料库程式.ppt(56页珍藏版)》请在三一办公上搜索。
1、第十八章 利用dbExpress開發 資料庫程式,dbExpress為C+Builder 6後才新增加的資料庫連結方式,透過一系列輕量級的驅動程式來達到和資料庫快速連結的目的,而最主要的目的則是為了和Kylix相容。Kylix為Borland推出的Linux平台下程式開發軟體,透過C+或Object Pascal語法的使用讓C+Builder/Delphi的使用者能快速的開發或移植程式到Linux平台上,做到Write Once,Run Everywhere的最終目標,所以dbExpress的推出主要在克服BDE、ADO不相容於Linux的缺點,此外,dbExpress連結方式也因為具有免事先
2、設定、攜帶容易、速度快和消耗資源少等優點而成為Borland公司目前全力支援的連結架構。,大綱,18-1dbExpress連結簡介18-2SQLConnection元件18-3SQLDataSet元件18-4SQLQeury元件18-5SQLTable元件18-6SQLMonitor元件的使用,18-1.dbExpress連結簡介,dbExpress因為在效能和使用上都有不錯的表現而成為Borland公司目前全力支持的連結方式,不論是Delphi、Kylix和C+Builder 都可以看到該連結元件的蹤影,而對於要開發能適用於Windows和Linux兩個作業系統下資料庫程式的程式設計師來說,
3、使用dbExpress更是目前唯一可行的方式,和傳統的BDE連結方式相比,該架構最大的不同在於採用單向指標和取消了緩衝記憶體的使用,而非過去的靠緩衝儲存器輔助來實作雙向指標,雖然換來效能上的提昇,但也相對了增加一些使用上的限制,底下為該架構和傳統BDE所不同的地方只支援資料集合中的First和Next方法。因為單向指標的限制導致指標在資料集合內只能單向的往下移動和回到第一筆資料的位置,而無法像雙向指標可以自由的往上或往下移動指標。,18-1.dbExpress連結簡介,沒有對編輯模式的內建支援。因為過去對資料集合內記錄的修改(Edit方法)需要額外緩衝記憶體的支援來儲存這些修改動作,但是由於d
4、bExpress本身並沒有使用到緩衝記憶體,所以自然無法執行過去的編輯模式,而解決方式則是使用SQL語法中的Update來直接進行修改的動作,或是透過其他使用緩衝記憶體的元件來輔助,如連結資料集合至ClientDataSet元件。不支援資料集合內的Filter屬性,也就是說無法對傳回來的資料集合設定過濾條件,因為過濾器的使用同樣也需要緩衝記憶體的支援,所以當你在dbExpress連結方式中使用Filter屬性將會觸發例外處理的產生,解決的方式是使用SQL語法直接對遠端資料庫下過濾條件的設定,而非等資料集合已經形成後再進行篩選的動作。不支援Lookup欄位的設定,因為Lookup欄位同樣需要使用
5、緩衝記憶體來儲存相關的欄位值。,18-1.dbExpress連結簡介,綜合以上的使用限制可以知道,所有用到緩衝記憶體的資料集合屬性和方法在dbExpress下是不被允許的,所以對於需要緩衝記憶體輔助的感知元件當然也無法使用,包括最為熟知的DBGrid、DBLookupListBox和DBLookupComboBox等元件,不過,如果不考慮這些限制的話,dbExpress因為單向指標的使用而成為C+Builder下最快速的資料連結機制,且在使用和安裝部署上亦是最為簡單的。所有dbExpress元件皆位在元件樣版內的dbExpress頁次中,功能不外乎和資料庫相連、對資料庫進行存取和傳回指向資料集
6、合的單向指標。,18-1.dbExpress連結簡介,簡略介紹各元件功能如下:SQLConnection元件負責使用dbExpress連結方式和資料庫建立連結的管道,如果讀者熟悉ADO元件的話,該元件的功能類似ADOConnection。SQLDataSet元件C+Builder提供的四個單向資料集合元件之一,同時也是四個之中最一般化的元件,不論有無回傳資料集合的指令皆可透過CommandText屬性的指定加以執行,相當類似於ADODataSet元件的使用方式。SQLTable元件讀取表格為主的資料集合元件,透過指定表格名稱的方式來讀取資料,而回傳的資料集合僅能透過First和Next方法進行
7、檢視。,18-1.dbExpress連結簡介,SQLQuery元件查詢形式的資料集合元件,也就是完全透過SQL語法的方式對資料庫下執行指令,包括回傳資料集合的Select指令或是沒有回傳集合的DDL語法。SQLStoredProc元件該元件的功能在於執行資料庫內定義的Stored Procedure,並接收Stored Procedure所傳回來的資料集合或執行結果。,18-2.SQLConnection元件,SQLConnection元件負責和資料庫間的連結建立,與BDE連結不同的是:它不需要BDE Administrator之類工具的資料庫連結設定,而採用和ADO相似的設定方式,至於詳細的
8、設定步驟則分為1.驅動程式的指定和2.參數的傳遞驅動程式的指定:使用dbExpress連結所需要的資料庫驅動程式分為兩個檔案:一個是dbExpress本身的驅動程式,為一個動態連結函式庫的DLL檔,根據使用的資料庫不同而對應到不同的DLL檔,預設提供INTERBASE、ORACLE、MYSQL和DB2四種資料庫的驅動程式版本,對應的DLL檔案分別為dbexpint.dll、dbexpora.dll、dbexpmys.dll和dbexpdb2.dll另外一個則為資料庫廠商對於Client端提供的動態聯結函式庫(DLL),也是隨著不同廠商而不同。不過,使用者其實並不需要在意究竟是使用了上述的哪兩個
9、DLL檔,因為當我們設定SQLConnection的DriverName屬性時,SQLConnection會根據dbxdrivers.ini自動選擇對應的DLL檔來使用。,18-2.SQLConnection元件,參數的傳遞指定了驅動程式後,便需要透過參數的傳遞設定連結的資料庫,這些常用的參數包括Database(資料庫名稱)、User Name(使用者名稱)、Password(登入密碼)、Host Name(連線主機)等,不同資料庫的參數設定內容不盡相同。為了設定方便,當指定DriverName屬性後,SQLConnection會根據DriverName的設定值提供對應的參數列表供設定者參考
10、。這些參數中,以Database參數為最基本且必備的設定,該Database參數值來源隨資料庫的種類而不盡相同,像INTERBASE的Database便是根據.gdb檔案的名稱來決定,Oracle則根據TNSNames.ora中的設定,至於DB2則為Client端的節點名稱(node name)。上述的設定還可透過連結編輯器的輔助來省去我們設定的麻煩,如下一小節中所述。,18-2-1.連結編輯器的使用,雙擊表單上的SQLConnection元件開啟連結編輯器的設定畫面,如右圖所示,在預設的畫面中,會提供五個代表不同資料庫的連結名稱(Connection Name)供使用者直接進行設定。在此,我
11、們選擇建立一個新的連結名稱來介紹連結編輯器的使用方式,請點選游標所指的按鈕以建立一個新的連結。,18-2-1.連結編輯器的使用,按下【+】的按鈕後便會彈出如下圖所示的對話框,在對話框中要求設定的資料庫的驅動程式,即連結的資料庫類型,共有 DB2、INTERBASE、Informin、MySQL、Oracle五種不同的驅動程式可供選擇,除此,在Connection Name輸入框中輸入該連結的識別名稱,這裡我們以MySQL為示範,Connection Name為Example。,選擇驅動程式類型,18-2-1.連結編輯器的使用,按下【OK】按鈕後對該連結進行細步設定,畫面如右圖所示:依照實際連結
12、的MySQL資料庫設定HostName(MySQL主機位置)Database(連結資料庫)User_Name(使用者名稱)Password(密碼)四個屬性值接著透過物件檢視器設定SQLConnection元件的VendorLib屬性值至libMySQL.dll路徑所在,如右圖所示:,說明:一般安裝資料庫所附的Client端軟體後,VendorLib屬性值的路徑會自動連結而不需額外指定。,18-2-1.連結編輯器的使用,回到連結設定畫面按下【】按鈕測試設定是否正確,登入資料庫後彈出如下圖畫面即表示連結成功。,18-2-2.SQLConnection的使用,在完成使用連結編輯器對資料庫的連結設定後
13、,透過SQLConnection連結資料庫便成為一個簡單的工作了,而設定SQLConnection最重要的部份就在於ConnectionName屬性值的指定,下面為該元件使用的基本三步驟。透過物件檢視器設定SQLConnection元件的ConnectionName屬性以指定連結的資料庫,至於ConnectionName屬性的設定來源則取決於連結編輯器中的紀錄。當ConnectionName屬性值選定後,DriverNmae、LibraryName和VendorLib三個屬性值會自動隨著ConnectionName設定而變動,並對應到之前在連結編輯器中的設定,因此,只要設定好Connectio
14、nName屬性值就代表完成了該元件的大部分設定,尤其是連結驅動程式的指定上。,18-2-2.SQLConnection的使用,透過LoginPrompt屬性的設定來控制密碼對話框的出現與否;倘若ConnectionName內容已經紀錄了使用者名稱和密碼的資訊,則可以設定LoginPrompt屬性為False以關閉密碼對話框,省去每次SQLConnection元件和資料庫連結時彈出密碼框的麻煩。設定Connected屬性值為True和遠端資料庫建立連線,至於KeepConnection屬性則設定該元件和資料庫之間是否永遠保持連結狀態,縱使沒有其他SQLTable、SQLDataSet或SQLQu
15、ery元件透過該元件和資料庫連結。,18-2-3.SQLConnection常用屬性,18-2-3.SQLConnection常用屬性,18-2-3.SQLConnection常用屬性,18-2-3.SQLConnection常用屬性,18-2-4.SQLConnection常用方法,CloneConnection此方法能產生一個相同的SQLConnection元件,當AutoClone屬性設為False時,可用此方法手動建立一個新的SQLConnection。CloseDataSets呼叫SQLConnection元件的CloseDataSets方法能關閉所有透過該SQLConnection
16、元件連結到資料庫的資料集合元件,但不影響SQLConnection元件本身和資料庫之間的連線。,18-2-4.SQLConnection常用方法,ExecuteSQLConnection元件除了建立連線外,亦可以直接對資料庫進行指令執行的動作,而這SQL語法的指令以不會回傳資料集合的DDL最為適合,因為SQLConnection本身並非資料集合元件,至於使用格式如下所示:SQL用來指定所要執行的SQL語法。Params設定SQL語法內使用的變數值。當SQL語法回傳資料集合時,透過ResultSet來記錄回傳集合的指標。不過建議讀者還是使用其他如SQLDataSet元件來處理資料集合回傳的應用。
17、最後,該函式會傳回資料庫中被該SQL語法影響的資料筆數。,18-2-4.SQLConnection常用方法,程式範例如下:,18-2-4.SQLConnection常用方法,ExecuteDirectExecuteDirect方法執行沒有變數傳入的SQL語法。當SQL語法內不含變數時,便可使用ExecuteDirect方法代替Execute,如果執行正確,回傳值為0,否則回傳dbExpress的錯誤編號。GetFieldNames針對某個資料表,呼叫GetFieldName可以回傳該資料表的所有欄位,使用方式如下:,18-2-4.SQLConnection常用方法,GetTableNames讀
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CBuilder 利用 dbExpress 开发 资料库 程式
链接地址:https://www.31ppt.com/p-6502827.html