首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡(luò)課程 模擬考試 考友錄 實(shí)用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓(xùn) | 在職研 | 自學(xué)考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級(jí) | 職稱英語 | 商務(wù)英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級(jí) | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學(xué)習(xí) | 法語 | 德語 | 韓語
計(jì)算機(jī)等級(jí)考試 | 軟件水平考試 | 職稱計(jì)算機(jī) | 微軟認(rèn)證 | 思科認(rèn)證 | Oracle認(rèn)證 | Linux認(rèn)證
華為認(rèn)證 | Java認(rèn)證
公務(wù)員 | 報(bào)關(guān)員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導(dǎo)游資格
報(bào)檢員 | 教師資格 | 社會(huì)工作者 | 外銷員 | 國際商務(wù)師 | 跟單員 | 單證員 | 物流師 | 價(jià)格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡(luò)編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護(hù)士
會(huì)計(jì)從業(yè)資格考試會(huì)計(jì)證) | 經(jīng)濟(jì)師 | 會(huì)計(jì)職稱 | 注冊(cè)會(huì)計(jì)師 | 審計(jì)師 | 注冊(cè)稅務(wù)師
注冊(cè)資產(chǎn)評(píng)估師 | 高級(jí)會(huì)計(jì)師 | ACCA | 統(tǒng)計(jì)師 | 精算師 | 理財(cái)規(guī)劃師 | 國際內(nèi)審師
一級(jí)建造師 | 二級(jí)建造師 | 造價(jià)工程師 | 造價(jià)員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質(zhì)量工程師 | 物業(yè)管理師 | 招標(biāo)師 | 結(jié)構(gòu)工程師 | 建筑師 | 房地產(chǎn)估價(jià)師 | 土地估價(jià)師 | 巖土師
設(shè)備監(jiān)理師 | 房地產(chǎn)經(jīng)紀(jì)人 | 投資項(xiàng)目管理師 | 土地登記代理人 | 環(huán)境影響評(píng)價(jià)師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價(jià)師 | 安全評(píng)價(jià)師 | 電氣工程師 | 注冊(cè)測(cè)繪師 | 注冊(cè)計(jì)量師
繽紛校園 | 實(shí)用文檔 | 英語學(xué)習(xí) | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲

2011計(jì)算機(jī)等考二級(jí)Delphi輔導(dǎo)講義:SQL編程

本章主要介紹用Delphi開發(fā)簡單的數(shù)據(jù)庫應(yīng)用程序的一般方法和步驟,首先讓讀者對(duì)Delphi強(qiáng)勁的數(shù)據(jù)庫應(yīng)用開發(fā)工具有一個(gè)直觀的印象,然后在此基礎(chǔ)上進(jìn)行復(fù)雜的數(shù)據(jù)庫應(yīng)用程序的設(shè)計(jì)。

  17.3.2 SQL程序的執(zhí)行

  在為TQuery部件設(shè)置完SQL屬性的屬性值之后,也即編寫好適當(dāng)?shù)腟QL程序之后,可以有多種方式來執(zhí)行SQL程序。

  在設(shè)計(jì)過程中,設(shè)置完TQuery部件的SQL屬性之后將其Active屬性的值置為True,這樣便可以執(zhí)行SQL屬性中的SQL程序,如果應(yīng)用中有與TQuery部件相連的數(shù)據(jù)瀏覽部件( 如TDDGrid TDBEdit等)那么在這些數(shù)據(jù)瀏覽部件中會(huì)顯示SQL程序的執(zhí)行結(jié)果。

  在應(yīng)用程序運(yùn)行過程中,通過程序調(diào)用TQuery部件的Open方法或ExecSQL 方法可以執(zhí)行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。大家在程序設(shè)計(jì)過程中一定要注意。Open方法只能用來執(zhí)行SQL語言的查詢語句(Select命令),并返回一個(gè)查詢結(jié)果集,而ExecSQL方法還可以用來執(zhí)行其它常用的SQL語句(如Insert、UPDATE、 DELETE等命令)例如:

  Query1.Open (這樣會(huì)返回一個(gè)查詢結(jié)果集)

  如果調(diào)用Open方法,而沒有查詢結(jié)果時(shí),會(huì)出錯(cuò)。此時(shí)應(yīng)該調(diào)用ExecSQL 方法來代替Open方法。如:

  Query1.ExecSQL (沒有返回結(jié)果)

  當(dāng)然在設(shè)計(jì)應(yīng)用程序時(shí),程序設(shè)計(jì)人員是無法確定TQuery部件中的SQL 語句是否會(huì)返回一個(gè)查詢結(jié)果的。對(duì)于這種情況應(yīng)當(dāng)用Try…Except模塊來設(shè)計(jì)程序。在 Try 部分調(diào)用Open方法,而在Except部分調(diào)用ExceSQL方法,這樣才能保證程序的正確運(yùn)行。

  例如:

  Try

  Query1.Open

  Except

  Query1.ExecSQL

  End

  在應(yīng)用程序中使用TQuery部件時(shí),還可以設(shè)置它的UniDirectional屬性為True,這樣會(huì)加快檢索數(shù)據(jù)庫表的速度,但是這樣只能往一個(gè)方向移動(dòng)記錄指針, 在缺省情況下,UniDirectional屬性的值為False。

  17.3.3 通過TQuery部件如何獲得活動(dòng)的數(shù)據(jù)

  我們?cè)谇懊娴恼鹿?jié)里介紹TTable部件時(shí),我們知道通過TTable部件從數(shù)據(jù)庫中獲得的數(shù)據(jù)都是活動(dòng)的,也就是說用戶可以直接通過數(shù)據(jù)瀏覽部件對(duì)這些數(shù)據(jù)進(jìn)行編輯修改。而通過TQuery部件可以獲得兩種類型的數(shù)據(jù):

  ● “活動(dòng)”的數(shù)據(jù)

  這種數(shù)據(jù)就跟通過TTable部件獲得的數(shù)據(jù)一樣,用戶可以通過數(shù)據(jù)瀏覽部件來編輯修改這些數(shù)據(jù),并且當(dāng)調(diào)用Post方法或當(dāng)焦點(diǎn)離開當(dāng)前的數(shù)據(jù)瀏覽部件時(shí),用戶對(duì)數(shù)據(jù)的修改自動(dòng)地被寫回到數(shù)據(jù)庫中,詳細(xì)情況請(qǐng)參看第四章“數(shù)據(jù)瀏覽部件的應(yīng)用及編程”。

  ● 非活動(dòng)的數(shù)據(jù)(只讀數(shù)據(jù))

  用戶通過數(shù)據(jù)瀏覽部件是不能修改其中的數(shù)據(jù)。在缺省情況下,通過TQuery部件獲得的查詢結(jié)果數(shù)據(jù)是只讀數(shù)據(jù),要想獲得“活動(dòng)”的數(shù)據(jù),在應(yīng)用程序中必須要設(shè)置TQuery部件的RequestLive屬性值為True,然而并不是在任何情況下(通過設(shè)置RequestLive的屬值True)都可以獲得“活動(dòng)”的數(shù)據(jù)的,要想獲得“活動(dòng)”的數(shù)據(jù),除了將TQuery部件的RequestLive屬性為True外,BDE要能夠返回“活動(dòng)”的數(shù)據(jù),相應(yīng)的SQL命令語句還要滿足附錄C中的語法規(guī)則和下列的約束條件:

  TQuery部件獲得“活動(dòng)”的查詢結(jié)果數(shù)據(jù)的約束條件:

  當(dāng)查詢Paradox或dBASE數(shù)據(jù)庫中的表:

  ● 查詢只能涉及到一個(gè)單獨(dú)的表

  ● SQL語句中不能包含ORDER BY命令

  ● SQL語句中不能含聚集運(yùn)算符SUM或AVG

  ● 在Select后的字段列表中不能有計(jì)算字段

  ● 在Select語句WHERE部分只能包含字段值與常量的比較運(yùn)算,這些比較運(yùn)算符是: Like,>,<,>=,<=,各比較運(yùn)算之間可以有并和交運(yùn)算:AND和OR。

  當(dāng)通過SQL語句查詢數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)庫表:

  ● 查詢只能涉及到一個(gè)單獨(dú)的表

  ● SQL語句中不能包含ORDER BY命令

  ● SQL語句中不能含聚集運(yùn)算符SUM或AVG運(yùn)算

  另外,如果是查詢Sybase數(shù)據(jù)庫中的表,那么被查詢的表中只能有一個(gè)索引。

  如果在應(yīng)用程序中要求TQuery部件返回一個(gè)“活動(dòng)”的查詢結(jié)果數(shù)據(jù)集,但是SQL 命令語句不滿足上述約束條件時(shí),對(duì)于本地?cái)?shù)據(jù)庫的SQL查詢,BDE只能返回只讀的數(shù)據(jù)集。對(duì)于數(shù)據(jù)庫服務(wù)器中的SQL查詢,只能返回錯(cuò)誤的代碼。當(dāng)TQuery 部件返回一個(gè)“活動(dòng)”的查詢結(jié)果數(shù)據(jù)集時(shí),它的CanModify屬性的值會(huì)被設(shè)置成True。

  表17.1 TQuery部件返回查詢結(jié)果數(shù)據(jù)的類型

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  RequestLive屬性值 CanModify屬性值 查詢結(jié)果的類型

  ────────────────────────────────

  False False 只讀數(shù)據(jù)

  True(SQL語句滿足約束條件) True “活動(dòng)”數(shù)據(jù)

  True(SQL語句不滿足約束條件) False 只讀數(shù)據(jù)

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  當(dāng)TQuery部件返回只讀的查詢結(jié)果數(shù)據(jù)集,而用戶又希望修改這只讀的數(shù)據(jù)集時(shí),一般這樣來處理,在應(yīng)用程序中另外增加一個(gè) TQuery 部件 Query2( 假設(shè)獲得只讀結(jié)果的TQuery部件的名字是Query1),在Query2中設(shè)置修改語句UpDATE對(duì)Query1 中的數(shù)據(jù)進(jìn)行修改操作,這樣會(huì)實(shí)現(xiàn)對(duì)只讀數(shù)據(jù)的修改。

上一頁  1 2 3 4 5 6 7 8 下一頁
  相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題
       預(yù)告:名師解析2010年9月計(jì)算機(jī)等級(jí)考試試題答案
       2010年9月計(jì)算機(jī)等級(jí)考試成績查詢時(shí)間及入口
       2010年9月計(jì)算機(jī)等考成績查詢短信免費(fèi)提醒開通
文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系800@exam8.com,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。