17.2.2 在TQuery部件中編寫(xiě)簡(jiǎn)單的SQL查詢命令
在這一節(jié)里我們將學(xué)習(xí)如何使用TQuery部件編寫(xiě)簡(jiǎn)單的SQL查詢命令,并在Delphi 應(yīng)用程序中實(shí)現(xiàn)SQL查詢。
例如,如果我們想查詢出表Customer.DB中客戶的編號(hào)和公司名稱,我們按下列步驟來(lái)實(shí)現(xiàn):
①在應(yīng)用窗體中放置一個(gè)TQuery部件、一個(gè)TDataSource部件一個(gè)TDataGrid部件,并將它們連接起來(lái)
②設(shè)置窗體TQuery 部件Query1的DatabaseName屬性值為DBDEMOS
③雙擊Object Inspector窗口中Query1的SQL 屬性, Delphi 將顯示 String List Editor窗口。
④在圖17.3中的窗口中輸入SQL語(yǔ)句:
Select CustNo,Company From Custormer;
⑤單擊OK按鈕,關(guān)閉String List Editor窗口。
⑥設(shè)置Query的Open屬性為True。
17.3 SQL語(yǔ)言編程概述
在Delphi應(yīng)用程序中的SQL命令語(yǔ)句是包含在TQuery部件的SQL屬性中,TQuery部件的SQL屬性是TString類型的,也就是說(shuō)SQL屬性值是一個(gè)字符串列表,這個(gè)字符串列表非常類似于一個(gè)字符串類型的數(shù)組,有關(guān)TString類型的信息請(qǐng)參看聯(lián)機(jī)幫助。在前一節(jié)里我們介紹了TQuery部件可以執(zhí)行兩種SQL語(yǔ)句:
● 靜態(tài)SQL語(yǔ)句
● 動(dòng)態(tài)SQL語(yǔ)句
靜態(tài)SQL語(yǔ)句在程序設(shè)計(jì)時(shí)便已固定下來(lái),它不包含任何參數(shù)和變量,例如下面的語(yǔ)句便是一條靜態(tài)SQL語(yǔ)句:
Select * From Cusromer Where CustNo = 1234;
而動(dòng)態(tài)SQL語(yǔ)句,也被稱作參數(shù)化的語(yǔ)句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語(yǔ)句是一條動(dòng)態(tài)SQL語(yǔ)句:
Select * From Customer Where CustNo =: Number;
其中的變量Number便是一個(gè)參數(shù)變量,它由一個(gè)冒號(hào)引導(dǎo),在程序運(yùn)行過(guò)程中,必須要為該參數(shù)賦值,該條SQL語(yǔ)句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時(shí)可以為該參數(shù)變量賦予不同的值。
17.3.1 SQL命令文本的編寫(xiě)
1. 使用String List Editor編寫(xiě)
我們要為TQuery部件的SQL屬性設(shè)置SQL命令文本時(shí),可以在應(yīng)用窗體中選擇TQuery部件且雙擊Object Inspector窗口中的SQL屬性,這樣便打開(kāi)了String List Editor 窗口,在該窗口中我們便可以編寫(xiě)各種SQL命令,如圖17.3所示。
在編寫(xiě)完適當(dāng)?shù)腟QL語(yǔ)句之后,選擇 OK 按鈕便可以將編輯器中的 SQL 命令文裝入到TQuery部件的SQL屬性中,選擇SAVE按鈕可以將編寫(xiě)好的SQL命令保存到一個(gè)文件中供以后編程時(shí)使用。我們?cè)诰帉?xiě)SQL命令文本時(shí)還可以選擇Load按鈕從一個(gè) SQL 命令文件中調(diào)入SQL命令。在程序運(yùn)行過(guò)程中,要想設(shè)置TQuery部件的SQL屬性,必須首先調(diào)用Close方法,關(guān)閉TQuery部件,然后再調(diào)用Clear方法清除SQL屬性中現(xiàn)存的SQL命令語(yǔ)句,最后再調(diào)用Add方法為SQL屬性設(shè)置新的SQL命令語(yǔ)句。例如:
Query1.Close {關(guān)閉Query1)
Query1.SQL.Clear {清除SQL屬性中的SQL命令語(yǔ)句}
Query1.SQL.Add('Select * From Country');
Query1.SQL.Add('Where Name ="ARGENTINA" ');
在為TQuery部件設(shè)置SQL屬性時(shí)調(diào)用Close方法總是很安全的,如果TQuery部件已經(jīng)被關(guān)閉了,調(diào)用Close方法時(shí)不會(huì)產(chǎn)生任何影響。在應(yīng)用程序中為SQL屬性設(shè)置新的SQL 命令語(yǔ)句時(shí),必須要調(diào)用Clear方法以清除SQL屬性中現(xiàn)存的SQL命令語(yǔ)句,如果不調(diào)用Clear方法,便調(diào)用Add方法向SQL屬性中設(shè)置SQL命令語(yǔ)句,那么新設(shè)置的SQL命令語(yǔ)句會(huì)追加在現(xiàn)存SQL命令語(yǔ)句后面,在程序運(yùn)行時(shí)常常會(huì)出現(xiàn)出乎意料的查詢結(jié)果甚至程序無(wú)法運(yùn)行下去。
在這里要特別注意的,一般情況下TQuery部件的SQL屬性只能包含一條完整的SQL語(yǔ)句,它不允許被設(shè)置成多條SQL語(yǔ)句。當(dāng)然有些數(shù)據(jù)庫(kù)服務(wù)器也支持在TQuery部件的SQL屬性中設(shè)置多條SQL語(yǔ)句,只要數(shù)據(jù)庫(kù)服務(wù)器允許這樣,我們?cè)诰幊虝r(shí)可以為 SQL 屬性設(shè)置多條SQL語(yǔ)句。
2. 使用Visual Query Builder編寫(xiě)
客戶/服務(wù)器版本的Delphi還包含一個(gè)可視化的查詢構(gòu)造器Visual Query Builder ,用這個(gè)可視化的工具我們只能編寫(xiě)Select語(yǔ)句。在應(yīng)用程序窗體中選擇TQuery部件后,單擊鼠標(biāo)右鍵,彈出一個(gè)彈出式菜單,從中選擇Run Visual Query Builder后便會(huì)彈出一對(duì)話框提示你選擇要訪問(wèn)的數(shù)據(jù)庫(kù),選擇想要訪問(wèn)的數(shù)據(jù)庫(kù)之后選擇OK按鈕,緊接著會(huì)出現(xiàn)一個(gè)彈出式對(duì)話框提示你選擇要查詢的數(shù)據(jù)庫(kù)表,一次可以選擇多個(gè)數(shù)據(jù)庫(kù)表,若要選擇多個(gè)數(shù)據(jù)庫(kù)表,每選擇一個(gè)表之后單擊Add按鈕,接著選擇另一個(gè)表,選擇完要查詢的表之后單擊Close按鈕,這樣,可視化的查詢構(gòu)造器中將會(huì)顯示出用戶選擇的數(shù)據(jù)庫(kù)表。
有關(guān)如何使用可視化的查詢構(gòu)造器Visual Query Builder 請(qǐng)參看聯(lián)機(jī)幫助信息, 在Visual Query Builder中構(gòu)造完一個(gè)查詢并退出Visual Query Builder時(shí),其中的SQL 命令語(yǔ)句會(huì)自動(dòng)地寫(xiě)入相應(yīng)的TQuery部件的SQL屬性。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |