國家工信部網(wǎng)站備案實名:湖北自考網(wǎng) 為考生提供湖北自考信息服務(wù),僅供學(xué)習(xí)交流使用,官方信息以湖北教育考試院為準(zhǔn)。
湖北自考在線 湖北學(xué)位英語培訓(xùn)班 湖北成人高考報名 湖北自考視頻免費領(lǐng)取

自考“計算機及應(yīng)用”專業(yè)論文參考范文(16) -自考串講筆記

湖北自考網(wǎng) 來源: 時間:2008-11-08 15:41:29

  §3.2  數(shù)據(jù)庫組件介紹

  用Delphi6開發(fā)數(shù)據(jù)庫應(yīng)用,重點是和各種數(shù)據(jù)庫組件打交道,能和數(shù)據(jù)庫掛鉤的組件對象有5種,它們是:Session(數(shù)據(jù)庫會話)、Database(數(shù)據(jù)庫)、Dataset(數(shù)據(jù)集)、DataSource(數(shù)據(jù)源)、Data control(數(shù)據(jù)控制組件,也叫data-controls即數(shù)據(jù)感知組件)。其中前面4種統(tǒng)稱為數(shù)據(jù)訪問(Data Access)組件。這些組件的相互關(guān)系如圖3-2所示。

  ADO組件  Delphi6.0包含了可以用來訪問Microsoft公司的ActiveX Data Objects(ADO)格式數(shù)據(jù)庫的組件。ADO是Micrsoft公司關(guān)于各種類型數(shù)據(jù)的高等界面,后來逐漸演變成滿足所有數(shù)據(jù)訪問需要的完整解決辦法。ADO的對象模型是所有數(shù)據(jù)訪問接口對象模型中最簡單的一種。Microsoft公司用來訪問ADO數(shù)據(jù)的應(yīng)用程序界面技術(shù)是OLE DB.OLE DB是一種底層編程接口,用來訪問許多不同類型的數(shù)據(jù)源,其中包括消息、文件系統(tǒng)以及其他一些非傳統(tǒng)的數(shù)據(jù)源。OLE DB是一個由Component Object Model(COM)接口組成的集合,用來隱藏創(chuàng)建數(shù)據(jù)訪問服務(wù)過程中的細節(jié)。OLEDB提供了訪問任何數(shù)據(jù)資源的方法,包括相互關(guān)聯(lián)的數(shù)據(jù)庫和相互不關(guān)聯(lián)的數(shù)據(jù)庫、Email和文件系統(tǒng)、文本和圖形以及用戶定義的數(shù)據(jù)對象。

  Delphi的ADO組件無需依靠BDE而是使用ADO技術(shù),提供了可以通過數(shù)據(jù)控制組件訪問數(shù)據(jù)的新方法。唯一的要求是在使用ADO組件時必須運行ADO/OLE-DB.ADO組件的使用使得DELPHI在訪問數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的突破。

  數(shù)據(jù)模塊設(shè)計窗口  數(shù)據(jù)模塊設(shè)計窗口是用來設(shè)計和維護數(shù)據(jù)模塊的。數(shù)據(jù)模塊設(shè)計窗口中包含了所有以。DTI作為文件擴展名的Data Diagram文件的信息。DTI文件在編譯時不起任何作用。

  §3.3  SQL語言在Delphi中的應(yīng)用

  在Delphi中使用SQL語言非常方便,一般來說,都是通過Tquery或TADOquery組件來使用SQL語言的。可以在Tquery或TADOquery組件的SQL屬性中設(shè)置SQL語句。設(shè)計程序時,在該組件的屬性對話框中選擇SQL屬性,單擊帶省略號的按鈕,就可以打開String List Editor對話框,然后我們就可以在對話框中添加SQL語句。還可以使用Delphi的SQL Builder來自動生成SQL語句,這樣可以避免手工編寫SQL而可能造成的語法錯誤。

  靜態(tài)SQL語句在程序設(shè)計時便已固定下來,它不包含任何參數(shù)和變量。

  動態(tài)SQL語句,也被稱作參數(shù)化的語句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語句是一條動態(tài)SQL語句:

  Select  *  From  Book  Where 圖書編號 =:bookCode;

  其中的變量bookCode便是一個參數(shù)變量,它由一個冒號引導(dǎo),在程序運行過程中,必須要為該參數(shù)賦值,該條SQL語句才能正確執(zhí)行,每次運行應(yīng)用程序時可以為該參數(shù)變量賦予不同的值。為參數(shù)賦值有三種方法:

 ?、俑鶕?jù)參數(shù)在SQL語句中出現(xiàn)的順序,設(shè)置TADOQuery組件的parameters屬性值為參數(shù)賦值。

 ?、谥苯痈鶕?jù)SQL語句中各參數(shù)的名字,調(diào)用ParamByName方法來為各參數(shù)賦值。

 ?、蹖ADOQuery組件的DataSource屬性設(shè)置為另一個數(shù)據(jù)源,這樣將另一個數(shù)據(jù)源中與當(dāng)前TADOQuery組件的SQL語句中的參數(shù)名相匹配的字段值賦給其對應(yīng)的參數(shù)。利用這種方法也能實現(xiàn)所謂的連接查詢,創(chuàng)建主要-明細型數(shù)據(jù)庫應(yīng)用。

  在使用動態(tài)SQL語句編程時,常常用到一個很重要的方法Prepare,調(diào)用Prepare 方法之后,Delphi會將帶參數(shù)的SQL語句傳送給與其對應(yīng)的數(shù)據(jù)庫引擎,對動態(tài)SQL語句進行語法分析和優(yōu)化。雖然在用動態(tài)SQL語句編程時,調(diào)用Prepare方法并不是必須的,但是調(diào)用Prepare方法后,會極大地提高動態(tài)SQL 語句的執(zhí)行性能,特別是當(dāng)要反復(fù)多次執(zhí)行同一條動態(tài)SQL語句時,其優(yōu)越性會更加明顯。 如果在應(yīng)用程序中執(zhí)行一條SQL語句之前并沒有顯式地調(diào)用Prepare方法,每次在執(zhí)行SQL 語句時,Delphi會隱含地調(diào)用Prepare方法以準(zhǔn)備這個查詢。

  TadoQuery部件還有一個Prepare屬性,這是一個布爾型屬性,當(dāng)其屬性值為True時, 表明該查詢已被準(zhǔn)備好了( SQL 語句已被傳送到數(shù)據(jù)庫引擎中 ) , 當(dāng)我們使用參數(shù)編輯器Parameters Editor來為動態(tài)SQL語句中的參數(shù)賦值時,當(dāng)設(shè)置完相應(yīng)的參數(shù)值并退出參數(shù)編輯器時,Delphi會隱含地調(diào)用Prepare方法以準(zhǔn)備好查詢。

  當(dāng)SQL語句執(zhí)行完之后,要想準(zhǔn)備下一個查詢,首先必須調(diào)用Close方法,然后才能調(diào)用Prepare方法準(zhǔn)備下一個查詢。一般來說,在一個應(yīng)用程序中應(yīng)該調(diào)用一次Prepare方法,常常在窗體的OnCreate事件處理過程中調(diào)用Prepare方法, 然后用上述介紹的方法為參數(shù)賦值,最后調(diào)用Open方法或ExecSQL方法執(zhí)行SQL語句,以完成查詢。

  當(dāng)然在調(diào)用Prepare方法準(zhǔn)備好一個查詢時,會消耗一些數(shù)據(jù)庫資源, 因而每當(dāng)一個查詢執(zhí)行完畢之后,要養(yǎng)成調(diào)用UnPrepare方法以撤消查詢的好習(xí)慣。在運行程序過程中,通過程序改變TQuery或TADOquery部件的SQL屬性值時,Delphi會自動地調(diào)用Close方法和UnPrepare 方法,以撤消查詢。

  在程序運行過程中,要想設(shè)置Tquery或TADOquery部件的SQL屬性,必須首先調(diào)用Close方法,關(guān)閉TQuery或TADOquery部件,然后再調(diào)用Clear方法清除SQL屬性中現(xiàn)存的SQL命令語句, 最后再調(diào)用Add方法為SQL屬性設(shè)置新的SQL命令語句。例如:

  datamodule4.adoquery2.close;

  datamodule4.adoquery2.sql.clear;

  datamodule4.adoquery2.sql.add('SELECT 借書證號,密碼 FROM [user] WHERE (借書證號 = :tt)');

  datamodule4.adoquery2.parameters[0].value:=username;

  datamodule4.adoquery2.open;

  在為TQuery或TADOquery部件設(shè)置SQL屬性時調(diào)用Close方法總是很安全的,如果TQuery或TADOquery部件已經(jīng)被關(guān)閉了,調(diào)用Close方法時不會產(chǎn)生任何影響。在應(yīng)用程序中為SQL屬性設(shè)置新的SQL 命令語句時,必須要調(diào)用Clear方法以清除SQL屬性中現(xiàn)存的SQL命令語句,如果不調(diào)用Clear方法,便調(diào)用Add方法向SQL屬性中設(shè)置SQL命令語句,那么新設(shè)置的SQL命令語句會追加在現(xiàn)存SQL命令語句后面, 在程序運行時常常會出現(xiàn)出乎意料的查詢結(jié)果甚至程序無法運行下去。

  在這里要特別注意的,一般情況下TQuery或TADOquery部件的SQL屬性只能包含一條完整的SQL語句,它不允許被設(shè)置成多條SQL語句。當(dāng)然有些數(shù)據(jù)庫服務(wù)器也支持在TQuery或TADOquery部件的SQL屬性中設(shè)置多條SQL語句,只要數(shù)據(jù)庫服務(wù)器允許這樣,我們在編程時可以為 SQL 屬性設(shè)置多條SQL語句。

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

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

  在應(yīng)用程序運行過程中,通過程序調(diào)用TQuery或TADOquery組件的Open方法或ExecSQL 方法可以執(zhí)行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。Open方法只能用來執(zhí)行SQL語言的查詢語句(Select命令), 并返回一個查詢結(jié)果集,而ExecSQL方法還可以用來執(zhí)行其它常用的SQL語句(如INSERT, UPDATE, DELETE等命令),例如:

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

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

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

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

  例如:

  Try

  Query1.Open

  Except

  Query1.ExecSQL

  End

  通過Tquery或TADOquery組件可以獲得兩種類型的數(shù)據(jù):

  u “活動”的數(shù)據(jù)

  這種數(shù)據(jù)就跟通過TTable部件獲得的數(shù)據(jù)一樣,用戶可以通過數(shù)據(jù)瀏覽部件來編輯修改這些數(shù)據(jù),并且當(dāng)調(diào)用Post方法或當(dāng)焦點離開當(dāng)前的數(shù)據(jù)瀏覽部件時,用戶對數(shù)據(jù)的修改自動地被寫回到數(shù)據(jù)庫中。

  u 非活動的數(shù)據(jù)(只讀數(shù)據(jù))

  用戶通過數(shù)據(jù)瀏覽部件是不能修改其中的數(shù)據(jù)。在缺省情況下,通過TQuery部件獲得的查詢結(jié)果數(shù)據(jù)是只讀數(shù)據(jù),要想獲得“活動”的數(shù)據(jù),在應(yīng)用程序中必須要設(shè)置Tquery或TADOquery組件的RequestLive屬性值為True,然而并不是在任何情況下(通過設(shè)置RequestLive的屬值True)都可以獲得“活動”的數(shù)據(jù)的,要想獲得“活動”的數(shù)據(jù),除了將TQuery部件的RequestLive屬性設(shè)置為True外,相應(yīng)的SQL命令還要滿足以下條件。

  本地SQL語句查詢情況下,要得到可更新的數(shù)據(jù)集,SQL語句的限制為:

  查詢只能涉及到一個單獨的表

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

  SQL語句中不能含聚集運算符SUM或AVG

  在Select后的字段列表中不能有計算字段

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

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

  查詢只能涉及到一個單獨的表

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

  SQL語句中不能含聚集運算符SUM或AVG運算

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

  如果在應(yīng)用程序中要求TQuery或TADO

結(jié)束
本文標(biāo)簽
特別聲明:1.凡本網(wǎng)注明稿件來源為“湖北自考網(wǎng)”的,轉(zhuǎn)載必須注明“稿件來源:湖北自考網(wǎng)(trillionsbussines.com)”,違者將依法追究責(zé)任;
2.部分稿件來源于網(wǎng)絡(luò),如有不實或侵權(quán),請聯(lián)系我們溝通解決。最新官方信息請以湖北省教育考試院及各教育官網(wǎng)為準(zhǔn)!
限時,免費獲取學(xué)歷提升方案

已幫助10w萬+意向?qū)W歷提升用戶成功上岸

  • 毛澤東思想概論

    毛澤東思想概論

    培訓(xùn)優(yōu)勢:課時考點精講+刷題+沖刺,熟練應(yīng)對考試題型。全程督促學(xué)習(xí),安排好學(xué)習(xí)計劃。 毛澤東思想概論...自考培訓(xùn)
  • 英語二

    英語二

    本課程既是一門語言實踐課程,也是拓寬知識、了解世界文化的重要素質(zhì)課程,它以培養(yǎng)學(xué)習(xí)者的綜合語言應(yīng)用能力為目標(biāo),使他們在學(xué)習(xí)、工作和社會交往中能夠使用英語進行有效的交流。 英語二...自考培訓(xùn)
  • 馬克思主義基本原理概論

    馬克思主義基本原理概論

    本書包括兩個部分:自學(xué)考試大綱和基本原理。主要內(nèi)容有,馬克思主義是關(guān)于工人階級和人類解放的科學(xué),物質(zhì)世界及其發(fā)展規(guī)律,認(rèn)識的本質(zhì)及其規(guī)律,人類社會及其發(fā)展規(guī)律,資本主義的形成及其發(fā)展,資本主義發(fā)展的歷史進程,社會主義社會及其進程,共產(chǎn)主義社會及其進程等。 馬克思主義基本原理概論...自考培訓(xùn)
  • 思想道德修養(yǎng)與法律基礎(chǔ)

    思想道德修養(yǎng)與法律基礎(chǔ)

    《思想道德修養(yǎng)與法律基礎(chǔ)》課具有鮮明的政治性、思想性、理論性、針對性、科學(xué)性、知識性以及實踐性和修養(yǎng)性。它包羅政治、思想、道德、心理本質(zhì)、學(xué)習(xí)成才和法律本質(zhì)等內(nèi)容,指導(dǎo)和回答大學(xué)生在人生、抱負、信念等方面遍及關(guān)心和迫切需要解決的問題。 思想道德修養(yǎng)與法律基礎(chǔ)...自考培訓(xùn)
  • 中國近代史綱要

    中國近代史綱要

    “中國近現(xiàn)代史綱要”全國高等教育自學(xué)考試指定教材,依據(jù)中央審定的普通高等學(xué)校“中國近現(xiàn)代史綱要”編寫大綱以及馬克思主義理論研究和建設(shè)工程重點教材《中國近現(xiàn)代史綱要》,結(jié)合自學(xué)考試的特點設(shè)計了十章,集中講述1840年鴉片戰(zhàn)爭爆發(fā)一直到2007年中國共產(chǎn)黨第十七次全國代表大會召開的160多年的中國近現(xiàn)代歷史。 中國近代史綱要...自考培訓(xùn)
微信公眾號 考試交流群
湖北自考網(wǎng)微信公眾號

掃一掃關(guān)注微信公眾號

隨時獲取湖北省自考政策、通知、公告以及各類學(xué)習(xí)資料、學(xué)習(xí)方法、課程。