首頁 考試吧論壇 Exam8視線 考試商城 網絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載 | ||
![]() |
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試 MPA考試 | 中科院 |
|
![]() |
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT 新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語 |
|
![]() |
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證 華為認證 | Java認證 |
|
![]() |
公務員 | 報關員 | 銀行從業資格 | 證券從業資格 | 期貨從業資格 | 司法考試 | 法律顧問 | 導游資格 報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師 人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業資格 | 廣告師職業水平 駕駛員 | 網絡編輯 |
|
![]() |
衛生資格 | 執業醫師 | 執業藥師 | 執業護士 | |
![]() |
會計從業資格考試(會計證) | 經濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師 注冊資產評估師 | 高級會計師 | ACCA | 統計師 | 精算師 | 理財規劃師 | 國際內審師 |
|
![]() |
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監理工程師 | 安全工程師 質量工程師 | 物業管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產估價師 | 土地估價師 | 巖土師 設備監理師 | 房地產經紀人 | 投資項目管理師 | 土地登記代理人 | 環境影響評價師 | 環保工程師 城市規劃師 | 公路監理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師 |
|
![]() |
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲 |
17.3.2 SQL程序的執行
在為TQuery部件設置完SQL屬性的屬性值之后,也即編寫好適當的SQL程序之后,可以有多種方式來執行SQL程序。
在設計過程中,設置完TQuery部件的SQL屬性之后將其Active屬性的值置為True,這樣便可以執行SQL屬性中的SQL程序,如果應用中有與TQuery部件相連的數據瀏覽部件( 如TDDGrid TDBEdit等)那么在這些數據瀏覽部件中會顯示SQL程序的執行結果。
在應用程序運行過程中,通過程序調用TQuery部件的Open方法或ExecSQL 方法可以執行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。大家在程序設計過程中一定要注意。Open方法只能用來執行SQL語言的查詢語句(Select命令),并返回一個查詢結果集,而ExecSQL方法還可以用來執行其它常用的SQL語句(如Insert、UPDATE、 DELETE等命令)例如:
Query1.Open (這樣會返回一個查詢結果集)
如果調用Open方法,而沒有查詢結果時,會出錯。此時應該調用ExecSQL 方法來代替Open方法。如:
Query1.ExecSQL (沒有返回結果)
當然在設計應用程序時,程序設計人員是無法確定TQuery部件中的SQL 語句是否會返回一個查詢結果的。對于這種情況應當用Try…Except模塊來設計程序。在 Try 部分調用Open方法,而在Except部分調用ExceSQL方法,這樣才能保證程序的正確運行。
例如:
Try
Query1.Open
Except
Query1.ExecSQL
End
在應用程序中使用TQuery部件時,還可以設置它的UniDirectional屬性為True,這樣會加快檢索數據庫表的速度,但是這樣只能往一個方向移動記錄指針, 在缺省情況下,UniDirectional屬性的值為False。
17.3.3 通過TQuery部件如何獲得活動的數據
我們在前面的章節里介紹TTable部件時,我們知道通過TTable部件從數據庫中獲得的數據都是活動的,也就是說用戶可以直接通過數據瀏覽部件對這些數據進行編輯修改。而通過TQuery部件可以獲得兩種類型的數據:
● “活動”的數據
這種數據就跟通過TTable部件獲得的數據一樣,用戶可以通過數據瀏覽部件來編輯修改這些數據,并且當調用Post方法或當焦點離開當前的數據瀏覽部件時,用戶對數據的修改自動地被寫回到數據庫中,詳細情況請參看第四章“數據瀏覽部件的應用及編程”。
● 非活動的數據(只讀數據)
用戶通過數據瀏覽部件是不能修改其中的數據。在缺省情況下,通過TQuery部件獲得的查詢結果數據是只讀數據,要想獲得“活動”的數據,在應用程序中必須要設置TQuery部件的RequestLive屬性值為True,然而并不是在任何情況下(通過設置RequestLive的屬值True)都可以獲得“活動”的數據的,要想獲得“活動”的數據,除了將TQuery部件的RequestLive屬性為True外,BDE要能夠返回“活動”的數據,相應的SQL命令語句還要滿足附錄C中的語法規則和下列的約束條件:
TQuery部件獲得“活動”的查詢結果數據的約束條件:
當查詢Paradox或dBASE數據庫中的表:
● 查詢只能涉及到一個單獨的表
● SQL語句中不能包含ORDER BY命令
● SQL語句中不能含聚集運算符SUM或AVG
● 在Select后的字段列表中不能有計算字段
● 在Select語句WHERE部分只能包含字段值與常量的比較運算,這些比較運算符是: Like,>,<,>=,<=,各比較運算之間可以有并和交運算:AND和OR。
當通過SQL語句查詢數據庫服務器中的數據庫表:
● 查詢只能涉及到一個單獨的表
● SQL語句中不能包含ORDER BY命令
● SQL語句中不能含聚集運算符SUM或AVG運算
另外,如果是查詢Sybase數據庫中的表,那么被查詢的表中只能有一個索引。
如果在應用程序中要求TQuery部件返回一個“活動”的查詢結果數據集,但是SQL 命令語句不滿足上述約束條件時,對于本地數據庫的SQL查詢,BDE只能返回只讀的數據集。對于數據庫服務器中的SQL查詢,只能返回錯誤的代碼。當TQuery 部件返回一個“活動”的查詢結果數據集時,它的CanModify屬性的值會被設置成True。
表17.1 TQuery部件返回查詢結果數據的類型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
RequestLive屬性值 CanModify屬性值 查詢結果的類型
────────────────────────────────
False False 只讀數據
True(SQL語句滿足約束條件) True “活動”數據
True(SQL語句不滿足約束條件) False 只讀數據
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
當TQuery部件返回只讀的查詢結果數據集,而用戶又希望修改這只讀的數據集時,一般這樣來處理,在應用程序中另外增加一個 TQuery 部件 Query2( 假設獲得只讀結果的TQuery部件的名字是Query1),在Query2中設置修改語句UpDATE對Query1 中的數據進行修改操作,這樣會實現對只讀數據的修改。
相關推薦:2010年9月計算機等級考試試題及答案解析專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |