自考“計(jì)算機(jī)及應(yīng)用”專業(yè)論文參考范文(16) -自考串講筆記
§3.2 數(shù)據(jù)庫(kù)組件介紹
用Delphi6開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用,重點(diǎn)是和各種數(shù)據(jù)庫(kù)組件打交道,能和數(shù)據(jù)庫(kù)掛鉤的組件對(duì)象有5種,它們是:Session(數(shù)據(jù)庫(kù)會(huì)話)、Database(數(shù)據(jù)庫(kù))、Dataset(數(shù)據(jù)集)、DataSource(數(shù)據(jù)源)、Data control(數(shù)據(jù)控制組件,也叫data-controls即數(shù)據(jù)感知組件)。其中前面4種統(tǒng)稱為數(shù)據(jù)訪問(wèn)(Data Access)組件。這些組件的相互關(guān)系如圖3-2所示。
ADO組件 Delphi6.0包含了可以用來(lái)訪問(wèn)Microsoft公司的ActiveX Data Objects(ADO)格式數(shù)據(jù)庫(kù)的組件。ADO是Micrsoft公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來(lái)逐漸演變成滿足所有數(shù)據(jù)訪問(wèn)需要的完整解決辦法。ADO的對(duì)象模型是所有數(shù)據(jù)訪問(wèn)接口對(duì)象模型中最簡(jiǎn)單的一種。Microsoft公司用來(lái)訪問(wèn)ADO數(shù)據(jù)的應(yīng)用程序界面技術(shù)是OLE DB.OLE DB是一種底層編程接口,用來(lái)訪問(wèn)許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一些非傳統(tǒng)的數(shù)據(jù)源。OLE DB是一個(gè)由Component Object Model(COM)接口組成的集合,用來(lái)隱藏創(chuàng)建數(shù)據(jù)訪問(wèn)服務(wù)過(guò)程中的細(xì)節(jié)。OLEDB提供了訪問(wèn)任何數(shù)據(jù)資源的方法,包括相互關(guān)聯(lián)的數(shù)據(jù)庫(kù)和相互不關(guān)聯(lián)的數(shù)據(jù)庫(kù)、Email和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對(duì)象。
Delphi的ADO組件無(wú)需依靠BDE而是使用ADO技術(shù),提供了可以通過(guò)數(shù)據(jù)控制組件訪問(wèn)數(shù)據(jù)的新方法。唯一的要求是在使用ADO組件時(shí)必須運(yùn)行ADO/OLE-DB.ADO組件的使用使得DELPHI在訪問(wèn)數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的突破。
數(shù)據(jù)模塊設(shè)計(jì)窗口 數(shù)據(jù)模塊設(shè)計(jì)窗口是用來(lái)設(shè)計(jì)和維護(hù)數(shù)據(jù)模塊的。數(shù)據(jù)模塊設(shè)計(jì)窗口中包含了所有以。DTI作為文件擴(kuò)展名的Data Diagram文件的信息。DTI文件在編譯時(shí)不起任何作用。
§3.3 SQL語(yǔ)言在Delphi中的應(yīng)用
在Delphi中使用SQL語(yǔ)言非常方便,一般來(lái)說(shuō),都是通過(guò)Tquery或TADOquery組件來(lái)使用SQL語(yǔ)言的。可以在Tquery或TADOquery組件的SQL屬性中設(shè)置SQL語(yǔ)句。設(shè)計(jì)程序時(shí),在該組件的屬性對(duì)話框中選擇SQL屬性,單擊帶省略號(hào)的按鈕,就可以打開(kāi)String List Editor對(duì)話框,然后我們就可以在對(duì)話框中添加SQL語(yǔ)句。還可以使用Delphi的SQL Builder來(lái)自動(dòng)生成SQL語(yǔ)句,這樣可以避免手工編寫(xiě)SQL而可能造成的語(yǔ)法錯(cuò)誤。
靜態(tài)SQL語(yǔ)句在程序設(shè)計(jì)時(shí)便已固定下來(lái),它不包含任何參數(shù)和變量。
動(dòng)態(tài)SQL語(yǔ)句,也被稱作參數(shù)化的語(yǔ)句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語(yǔ)句是一條動(dòng)態(tài)SQL語(yǔ)句:
Select * From Book Where 圖書(shū)編號(hào) =:bookCode;
其中的變量bookCode便是一個(gè)參數(shù)變量,它由一個(gè)冒號(hào)引導(dǎo),在程序運(yùn)行過(guò)程中,必須要為該參數(shù)賦值,該條SQL語(yǔ)句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時(shí)可以為該參數(shù)變量賦予不同的值。為參數(shù)賦值有三種方法:
①根據(jù)參數(shù)在SQL語(yǔ)句中出現(xiàn)的順序,設(shè)置TADOQuery組件的parameters屬性值為參數(shù)賦值。
?、谥苯痈鶕?jù)SQL語(yǔ)句中各參數(shù)的名字,調(diào)用ParamByName方法來(lái)為各參數(shù)賦值。
③將TADOQuery組件的DataSource屬性設(shè)置為另一個(gè)數(shù)據(jù)源,這樣將另一個(gè)數(shù)據(jù)源中與當(dāng)前TADOQuery組件的SQL語(yǔ)句中的參數(shù)名相匹配的字段值賦給其對(duì)應(yīng)的參數(shù)。利用這種方法也能實(shí)現(xiàn)所謂的連接查詢,創(chuàng)建主要-明細(xì)型數(shù)據(jù)庫(kù)應(yīng)用。
在使用動(dòng)態(tài)SQL語(yǔ)句編程時(shí),常常用到一個(gè)很重要的方法Prepare,調(diào)用Prepare 方法之后,Delphi會(huì)將帶參數(shù)的SQL語(yǔ)句傳送給與其對(duì)應(yīng)的數(shù)據(jù)庫(kù)引擎,對(duì)動(dòng)態(tài)SQL語(yǔ)句進(jìn)行語(yǔ)法分析和優(yōu)化。雖然在用動(dòng)態(tài)SQL語(yǔ)句編程時(shí),調(diào)用Prepare方法并不是必須的,但是調(diào)用Prepare方法后,會(huì)極大地提高動(dòng)態(tài)SQL 語(yǔ)句的執(zhí)行性能,特別是當(dāng)要反復(fù)多次執(zhí)行同一條動(dòng)態(tài)SQL語(yǔ)句時(shí),其優(yōu)越性會(huì)更加明顯。 如果在應(yīng)用程序中執(zhí)行一條SQL語(yǔ)句之前并沒(méi)有顯式地調(diào)用Prepare方法,每次在執(zhí)行SQL 語(yǔ)句時(shí),Delphi會(huì)隱含地調(diào)用Prepare方法以準(zhǔn)備這個(gè)查詢。
TadoQuery部件還有一個(gè)Prepare屬性,這是一個(gè)布爾型屬性,當(dāng)其屬性值為T(mén)rue時(shí), 表明該查詢已被準(zhǔn)備好了( SQL 語(yǔ)句已被傳送到數(shù)據(jù)庫(kù)引擎中 ) , 當(dāng)我們使用參數(shù)編輯器Parameters Editor來(lái)為動(dòng)態(tài)SQL語(yǔ)句中的參數(shù)賦值時(shí),當(dāng)設(shè)置完相應(yīng)的參數(shù)值并退出參數(shù)編輯器時(shí),Delphi會(huì)隱含地調(diào)用Prepare方法以準(zhǔn)備好查詢。
當(dāng)SQL語(yǔ)句執(zhí)行完之后,要想準(zhǔn)備下一個(gè)查詢,首先必須調(diào)用Close方法,然后才能調(diào)用Prepare方法準(zhǔn)備下一個(gè)查詢。一般來(lái)說(shuō),在一個(gè)應(yīng)用程序中應(yīng)該調(diào)用一次Prepare方法,常常在窗體的OnCreate事件處理過(guò)程中調(diào)用Prepare方法, 然后用上述介紹的方法為參數(shù)賦值,最后調(diào)用Open方法或ExecSQL方法執(zhí)行SQL語(yǔ)句,以完成查詢。
當(dāng)然在調(diào)用Prepare方法準(zhǔn)備好一個(gè)查詢時(shí),會(huì)消耗一些數(shù)據(jù)庫(kù)資源, 因而每當(dāng)一個(gè)查詢執(zhí)行完畢之后,要養(yǎng)成調(diào)用UnPrepare方法以撤消查詢的好習(xí)慣。在運(yùn)行程序過(guò)程中,通過(guò)程序改變TQuery或TADOquery部件的SQL屬性值時(shí),Delphi會(huì)自動(dòng)地調(diào)用Close方法和UnPrepare 方法,以撤消查詢。
在程序運(yùn)行過(guò)程中,要想設(shè)置Tquery或TADOquery部件的SQL屬性,必須首先調(diào)用Close方法,關(guān)閉TQuery或TADOquery部件,然后再調(diào)用Clear方法清除SQL屬性中現(xiàn)存的SQL命令語(yǔ)句, 最后再調(diào)用Add方法為SQL屬性設(shè)置新的SQL命令語(yǔ)句。例如:
datamodule4.adoquery2.close;
datamodule4.adoquery2.sql.clear;
datamodule4.adoquery2.sql.add('SELECT 借書(shū)證號(hào),密碼 FROM [user] WHERE (借書(shū)證號(hào) = :tt)');
datamodule4.adoquery2.parameters[0].value:=username;
datamodule4.adoquery2.open;
在為T(mén)Query或TADOquery部件設(shè)置SQL屬性時(shí)調(diào)用Close方法總是很安全的,如果TQuery或TADOquery部件已經(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或TADOquery部件的SQL屬性只能包含一條完整的SQL語(yǔ)句,它不允許被設(shè)置成多條SQL語(yǔ)句。當(dāng)然有些數(shù)據(jù)庫(kù)服務(wù)器也支持在TQuery或TADOquery部件的SQL屬性中設(shè)置多條SQL語(yǔ)句,只要數(shù)據(jù)庫(kù)服務(wù)器允許這樣,我們?cè)诰幊虝r(shí)可以為 SQL 屬性設(shè)置多條SQL語(yǔ)句。
在為T(mén)Query或TADOquery部件設(shè)置完SQL屬性的屬性值之后,也即編寫(xiě)好適當(dāng)?shù)腟QL程序之后,可以有多種方式來(lái)執(zhí)行SQL程序。
在設(shè)計(jì)過(guò)程中,設(shè)置完TQuery或TADOquery部件的SQL屬性之后將其Active屬性的值置為T(mén)rue, 這樣便可以執(zhí)行SQL屬性中的SQL程序,如果應(yīng)用中有與TQuery或TADOquery部件相連的數(shù)據(jù)瀏覽部件( 如TDDGrid TDBEdit等)那么在這些數(shù)據(jù)瀏覽部件中會(huì)顯示SQL程序的執(zhí)行結(jié)果。
在應(yīng)用程序運(yùn)行過(guò)程中,通過(guò)程序調(diào)用TQuery或TADOquery組件的Open方法或ExecSQL 方法可以執(zhí)行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。Open方法只能用來(lái)執(zhí)行SQL語(yǔ)言的查詢語(yǔ)句(Select命令), 并返回一個(gè)查詢結(jié)果集,而ExecSQL方法還可以用來(lái)執(zhí)行其它常用的SQL語(yǔ)句(如INSERT, UPDATE, DELETE等命令),例如:
Query1.Open (這樣會(huì)返回一個(gè)查詢結(jié)果集)
如果調(diào)用Open方法,而沒(méi)有查詢結(jié)果時(shí),會(huì)出錯(cuò)。此時(shí)應(yīng)該調(diào)用ExecSQL 方法來(lái)代替Open方法。如:
Query1.ExecSQL (沒(méi)有返回結(jié)果)
當(dāng)然在設(shè)計(jì)應(yīng)用程序時(shí),程序設(shè)計(jì)人員是無(wú)法確定TQuery或TADOquery組件中的SQL 語(yǔ)句是否會(huì)返回一個(gè)查詢結(jié)果的。對(duì)于這種情況應(yīng)當(dāng)用Try…Except模塊來(lái)設(shè)計(jì)程序。在 Try 部分調(diào)用Open方法,而在Except部分調(diào)用ExceSQL方法,這樣才能保證程序的正確運(yùn)行。
例如:
Try
Query1.Open
Except
Query1.ExecSQL
End
通過(guò)Tquery或TADOquery組件可以獲得兩種類型的數(shù)據(jù):
u “活動(dòng)”的數(shù)據(jù)
這種數(shù)據(jù)就跟通過(guò)TTable部件獲得的數(shù)據(jù)一樣,用戶可以通過(guò)數(shù)據(jù)瀏覽部件來(lái)編輯修改這些數(shù)據(jù),并且當(dāng)調(diào)用Post方法或當(dāng)焦點(diǎn)離開(kāi)當(dāng)前的數(shù)據(jù)瀏覽部件時(shí),用戶對(duì)數(shù)據(jù)的修改自動(dòng)地被寫(xiě)回到數(shù)據(jù)庫(kù)中。
u 非活動(dòng)的數(shù)據(jù)(只讀數(shù)據(jù))
用戶通過(guò)數(shù)據(jù)瀏覽部件是不能修改其中的數(shù)據(jù)。在缺省情況下,通過(guò)TQuery部件獲得的查詢結(jié)果數(shù)據(jù)是只讀數(shù)據(jù),要想獲得“活動(dòng)”的數(shù)據(jù),在應(yīng)用程序中必須要設(shè)置Tquery或TADOquery組件的RequestLive屬性值為T(mén)rue,然而并不是在任何情況下(通過(guò)設(shè)置RequestLive的屬值True)都可以獲得“活動(dòng)”的數(shù)據(jù)的,要想獲得“活動(dòng)”的數(shù)據(jù),除了將TQuery部件的RequestLive屬性設(shè)置為T(mén)rue外,相應(yīng)的SQL命令還要滿足以下條件。
本地SQL語(yǔ)句查詢情況下,要得到可更新的數(shù)據(jù)集,SQL語(yǔ)句的限制為:
查詢只能涉及到一個(gè)單獨(dú)的表
SQL語(yǔ)句中不能包含ORDER BY命令
SQL語(yǔ)句中不能含聚集運(yùn)算符SUM或AVG
在Select后的字段列表中不能有計(jì)算字段
在Select語(yǔ)句WHERE部分只能包含字段值與常量的比較運(yùn)算,這些比較運(yùn)算符是:Like, >, <, >=, <=.各比較運(yùn)算之間可以有并和交運(yùn)算:AND和OR
當(dāng)通過(guò)SQL語(yǔ)句查詢數(shù)據(jù)庫(kù)服務(wù)器中的數(shù)據(jù)庫(kù)表:
查詢只能涉及到一個(gè)單獨(dú)的表
SQL語(yǔ)句中不能包含ORDER BY命令
SQL語(yǔ)句中不能含聚集運(yùn)算符SUM或AVG運(yùn)算
另外,如果是查詢Sybase數(shù)據(jù)庫(kù)中的表,那么被查詢的表中只能有一個(gè)索引。
如果在應(yīng)用程序中要求TQuery或TADO
2.部分稿件來(lái)源于網(wǎng)絡(luò),如有不實(shí)或侵權(quán),請(qǐng)聯(lián)系我們溝通解決。最新官方信息請(qǐng)以湖北省教育考試院及各教育官網(wǎng)為準(zhǔn)!
-
112023-03湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案匯總湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案匯總
-
112023-03湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(5)湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(5)
-
112023-03湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(4)湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(4)
-
112023-03湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(3)湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(3)
-
112023-03湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(2)湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(2)
-
112023-03湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(1)湖北自考《運(yùn)輸保險(xiǎn)》精選習(xí)題及答案(1)
已幫助10w萬(wàn)+意向?qū)W歷提升用戶成功上岸
毛澤東思想概論
培訓(xùn)優(yōu)勢(shì):課時(shí)考點(diǎn)精講+刷題+沖刺,熟練應(yīng)對(duì)考試題型。全程督促學(xué)習(xí),安排好學(xué)習(xí)計(jì)劃。 毛澤東思想概論...自考培訓(xùn)英語(yǔ)二
本課程既是一門(mén)語(yǔ)言實(shí)踐課程,也是拓寬知識(shí)、了解世界文化的重要素質(zhì)課程,它以培養(yǎng)學(xué)習(xí)者的綜合語(yǔ)言應(yīng)用能力為目標(biāo),使他們?cè)趯W(xué)習(xí)、工作和社會(huì)交往中能夠使用英語(yǔ)進(jìn)行有效的交流。 英語(yǔ)二...自考培訓(xùn)馬克思主義基本原理概論
本書(shū)包括兩個(gè)部分:自學(xué)考試大綱和基本原理。主要內(nèi)容有,馬克思主義是關(guān)于工人階級(jí)和人類解放的科學(xué),物質(zhì)世界及其發(fā)展規(guī)律,認(rèn)識(shí)的本質(zhì)及其規(guī)律,人類社會(huì)及其發(fā)展規(guī)律,資本主義的形成及其發(fā)展,資本主義發(fā)展的歷史進(jìn)程,社會(huì)主義社會(huì)及其進(jìn)程,共產(chǎn)主義社會(huì)及其進(jìn)程等。 馬克思主義基本原理概論...自考培訓(xùn)思想道德修養(yǎng)與法律基礎(chǔ)
《思想道德修養(yǎng)與法律基礎(chǔ)》課具有鮮明的政治性、思想性、理論性、針對(duì)性、科學(xué)性、知識(shí)性以及實(shí)踐性和修養(yǎng)性。它包羅政治、思想、道德、心理本質(zhì)、學(xué)習(xí)成才和法律本質(zhì)等內(nèi)容,指導(dǎo)和回答大學(xué)生在人生、抱負(fù)、信念等方面遍及關(guān)心和迫切需要解決的問(wèn)題。 思想道德修養(yǎng)與法律基礎(chǔ)...自考培訓(xùn)中國(guó)近代史綱要
“中國(guó)近現(xiàn)代史綱要”全國(guó)高等教育自學(xué)考試指定教材,依據(jù)中央審定的普通高等學(xué)?!爸袊?guó)近現(xiàn)代史綱要”編寫(xiě)大綱以及馬克思主義理論研究和建設(shè)工程重點(diǎn)教材《中國(guó)近現(xiàn)代史綱要》,結(jié)合自學(xué)考試的特點(diǎn)設(shè)計(jì)了十章,集中講述1840年鴉片戰(zhàn)爭(zhēng)爆發(fā)一直到2007年中國(guó)共產(chǎn)黨第十七次全國(guó)代表大會(huì)召開(kāi)的160多年的中國(guó)近現(xiàn)代歷史。 中國(guó)近代史綱要...自考培訓(xùn)
- 在報(bào)考湖北自考之前,這些常見(jiàn)的認(rèn)知陷阱務(wù)必警惕!
- 湖北自考專升本途徑全解析:詳細(xì)對(duì)比來(lái)啦!
- 湖北自考機(jī)構(gòu)和自考官方助學(xué)點(diǎn)之間存在哪些差異?一文看懂!
- 加入湖北自考行列,這些炙手可熱的專業(yè)切勿遺漏!
- 報(bào)名湖北自考,能夠選擇哪些院校及對(duì)應(yīng)的專業(yè)呢?
- 2025年秋季長(zhǎng)江大學(xué)自考本科畢業(yè)生學(xué)位申請(qǐng)通知
- 2025年上半年湖北經(jīng)濟(jì)學(xué)院自考(社會(huì)開(kāi)考專業(yè))畢業(yè)論文、實(shí)踐課程考核報(bào)名及網(wǎng)上繳費(fèi)通知
- 湖北自考哪幾科簡(jiǎn)單?考生速看
- 湖北自考如何找回密碼?一文看懂!
- 湖北自考學(xué)歷不能認(rèn)證怎么辦?一文了解 查看更多

掃一掃關(guān)注微信公眾號(hào)
隨時(shí)獲取湖北省自考政策、通知、公告以及各類學(xué)習(xí)資料、學(xué)習(xí)方法、課程。