BorlandDelphi教學(xué)講義市公開課一等獎省賽課微課金獎?wù)n件_第1頁
BorlandDelphi教學(xué)講義市公開課一等獎省賽課微課金獎?wù)n件_第2頁
BorlandDelphi教學(xué)講義市公開課一等獎省賽課微課金獎?wù)n件_第3頁
BorlandDelphi教學(xué)講義市公開課一等獎省賽課微課金獎?wù)n件_第4頁
BorlandDelphi教學(xué)講義市公開課一等獎省賽課微課金獎?wù)n件_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第九章數(shù)據(jù)庫應(yīng)用程序設(shè)計9.1數(shù)據(jù)庫系統(tǒng)概述9.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)9.3數(shù)據(jù)庫設(shè)計9.4慣用數(shù)據(jù)庫組件9.5數(shù)據(jù)庫應(yīng)用程序綜合實例習(xí)題1/719.1數(shù)據(jù)庫系統(tǒng)概述9.1.1基本概念1.數(shù)據(jù)數(shù)據(jù)(Data)是數(shù)據(jù)庫中存放基本對象。所謂數(shù)據(jù),就是能被計算機(jī)識別與處理符號。數(shù)據(jù)種類很多,如數(shù)字、文字、表格、圖形、圖像、聲音等,都屬于數(shù)據(jù)。2.?dāng)?shù)據(jù)庫所謂數(shù)據(jù)庫(Database,簡稱DB)是長久存放在計算機(jī)內(nèi)、有組織、可共享數(shù)據(jù)集合。數(shù)據(jù)庫中數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存放,含有較小冗余度、較高數(shù)據(jù)獨立性和易擴(kuò)展性,并可為各種用戶共享。2/719.1數(shù)據(jù)庫系統(tǒng)概述3.?dāng)?shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)(DataBaseManagementSystem,簡稱DBMS)是一個以統(tǒng)一方式管理、維護(hù)數(shù)據(jù)庫中數(shù)據(jù)一系列軟件集合。DBMS是位于用戶應(yīng)用程序和操作系統(tǒng)之間數(shù)據(jù)庫管理系統(tǒng)軟件,對數(shù)據(jù)庫進(jìn)行統(tǒng)一管理和控制。它主要功效以下:(1)數(shù)據(jù)定義功效(2)數(shù)據(jù)操縱功效(3)數(shù)據(jù)庫運(yùn)行管理(4)數(shù)據(jù)庫建立和維護(hù)功效(5)數(shù)據(jù)庫通信功效3/719.1數(shù)據(jù)庫系統(tǒng)概述4.?dāng)?shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,簡稱DBS)是指在計算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后系統(tǒng),普通由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)和數(shù)據(jù)庫應(yīng)用程序組成。數(shù)據(jù)庫建立、使用和維護(hù)等工作只靠一個DBMS遠(yuǎn)遠(yuǎn)不夠,還要有專門人員來完成,這些人被稱為數(shù)據(jù)庫管理員(DataBaseAdministrator,簡稱DBA)。4/719.1數(shù)據(jù)庫系統(tǒng)概述9.1.2Delphi數(shù)據(jù)庫特征Delphi提供了許多組件以方便地創(chuàng)建數(shù)據(jù)庫應(yīng)用程序。它能夠訪問各種數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫,數(shù)據(jù)庫對象數(shù)據(jù)組員既可在設(shè)計階段設(shè)置,也可在運(yùn)行階段經(jīng)過程序代碼進(jìn)行設(shè)置。Delphi組件面板上提供了數(shù)據(jù)庫應(yīng)用程序開發(fā)中需要使用組件選項卡。5/719.1數(shù)據(jù)庫系統(tǒng)概述9.1.3Delphi能夠使用數(shù)據(jù)源Delphi數(shù)據(jù)庫應(yīng)用程序能夠經(jīng)過BDE獲取它們所需數(shù)據(jù),BDE與不一樣類型數(shù)據(jù)源打交道,BDE能夠使用數(shù)據(jù)源見表9-3。6/719.1數(shù)據(jù)庫系統(tǒng)概述表9-3BDE能夠使用數(shù)據(jù)源數(shù)據(jù)源特征描述dBASE數(shù)據(jù)庫數(shù)據(jù)庫表是經(jīng)過dBASE數(shù)據(jù)庫管理系統(tǒng)或DBD建立,每一個表是一個獨立.dbf文件Paradox數(shù)據(jù)庫數(shù)據(jù)庫表是經(jīng)過Paradox數(shù)據(jù)庫管理系統(tǒng).db或dbd建立,每一個表是一個獨立文件ASCII文件表是經(jīng)過DatabaseDesktop建立,每個.txt表是一個獨立文件當(dāng)?shù)豂nterBase服務(wù)器數(shù)據(jù)庫是經(jīng)過InterBase數(shù)據(jù)庫管理系統(tǒng).gbd建立,多個表包含在一個數(shù)據(jù)庫文件中SQL數(shù)據(jù)庫服務(wù)器數(shù)據(jù)庫是經(jīng)過對應(yīng)數(shù)據(jù)庫服務(wù)器提供依賴Oracle、Sybase、Informix專用或通用工具建立,也能夠經(jīng)過dbd或數(shù)據(jù)庫管理系統(tǒng)MicrosoftSQLServer創(chuàng)建數(shù)據(jù)庫,并經(jīng)過SQLLink訪問數(shù)據(jù)庫管理系統(tǒng)InterBaseODBC數(shù)據(jù)源主要是指那些含有ODBC接口數(shù)據(jù)庫系統(tǒng)依賴于如MSAccess、Btrieve等數(shù)據(jù)庫7/719.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)一個數(shù)據(jù)庫應(yīng)用程序往往包含兩部分:數(shù)據(jù)庫訪問部分和用戶界面。數(shù)據(jù)庫訪問部分直接或間接訪問數(shù)據(jù)庫,這為數(shù)據(jù)庫應(yīng)用程序和數(shù)據(jù)庫之間提供接口;而用戶界面主要是為了方便用戶使用,盡可能要設(shè)計友好界面,方便用戶操作。在編寫數(shù)據(jù)庫應(yīng)用程序時,普通把數(shù)據(jù)庫訪問部分和用戶界面分別封裝到不一樣模塊中。在Delphi中提供了數(shù)據(jù)模塊(DataModule)這種容器,在編寫數(shù)據(jù)庫應(yīng)用程序時把數(shù)據(jù)庫訪問部分內(nèi)容放在數(shù)據(jù)模塊中,這么就便于數(shù)據(jù)庫應(yīng)用程序數(shù)據(jù)存取一致性,便于程序調(diào)試和后期維護(hù)。數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)主要由兩方面決定,首先是使用數(shù)據(jù)庫類型(即是當(dāng)?shù)財?shù)據(jù)庫還是遠(yuǎn)程數(shù)據(jù)庫),另首先是同時訪問數(shù)據(jù)庫用戶數(shù)以及數(shù)據(jù)庫中需要存放哪些類型信息。由此,數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)能夠分為三種:單層結(jié)構(gòu)、兩層結(jié)構(gòu)和多層結(jié)構(gòu)。8/719.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)9.2.1單層結(jié)構(gòu)在單層數(shù)據(jù)庫應(yīng)用程序中,應(yīng)用程序和數(shù)據(jù)庫共享同一個文件系統(tǒng),它們使用當(dāng)?shù)財?shù)據(jù)庫或文件來存取數(shù)據(jù)。一個單層數(shù)據(jù)庫應(yīng)用程序同時包含了用戶界面和數(shù)據(jù)訪問機(jī)制(可能是經(jīng)過BDE,也可能是經(jīng)過文件)。單層數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)如圖9-1所表示。在此結(jié)構(gòu)中,能夠經(jīng)過基于BDE數(shù)據(jù)集組件從當(dāng)?shù)財?shù)據(jù)庫中獲取數(shù)據(jù),再經(jīng)過數(shù)據(jù)源(DataSource)組件向用戶提供數(shù)據(jù)。9/719.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)圖9-1單層數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)10/719.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)9.2.2兩層結(jié)構(gòu)在兩層數(shù)據(jù)庫應(yīng)用程序中,客戶程序提供用戶界面,經(jīng)過BDE、ADO從遠(yuǎn)程數(shù)據(jù)庫服務(wù)器獲取數(shù)據(jù)。兩層數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)如圖9-2所表示。把一個單層數(shù)據(jù)庫應(yīng)用程序轉(zhuǎn)換為兩層數(shù)據(jù)庫應(yīng)用程序,只要修改數(shù)據(jù)集組件屬性連接一個SQL服務(wù)器就行了。11/719.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)圖9-2兩層數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)12/719.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)9.2.3多層結(jié)構(gòu)多層數(shù)據(jù)庫應(yīng)用程序是為了適應(yīng)網(wǎng)絡(luò)技術(shù)飛速發(fā)展而發(fā)展起來一個新技術(shù)。它把整個應(yīng)用程序分為多個單元,全部單元一齊合作完成對數(shù)據(jù)庫管理。它是建立在兩層數(shù)據(jù)庫應(yīng)用基礎(chǔ)上,只要深刻了解了兩層數(shù)據(jù)庫模型,就能很好地掌握多層結(jié)構(gòu)數(shù)據(jù)庫應(yīng)用程序。13/719.2Delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)在多層結(jié)構(gòu)數(shù)據(jù)庫應(yīng)用程序中,客戶程序、應(yīng)用服務(wù)器和遠(yuǎn)程數(shù)據(jù)庫服務(wù)器通常分布在不一樣機(jī)器上。客戶程序主要提供用戶界面,它向應(yīng)用服務(wù)器請求數(shù)據(jù)和申請更新數(shù)據(jù),再由應(yīng)用服務(wù)器向遠(yuǎn)程數(shù)據(jù)庫服務(wù)器請求數(shù)據(jù)和申請更新數(shù)據(jù)。14/719.3數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫應(yīng)用程序設(shè)計包含兩個部分:數(shù)據(jù)庫設(shè)計和應(yīng)用程序設(shè)計。在開發(fā)數(shù)據(jù)庫應(yīng)用程序之前,必須進(jìn)行需求分析,對數(shù)據(jù)庫概念結(jié)構(gòu)、邏輯結(jié)構(gòu)和物理結(jié)構(gòu)進(jìn)行規(guī)范設(shè)計,這是決定數(shù)據(jù)庫應(yīng)用程序開發(fā)成敗關(guān)鍵。通常數(shù)據(jù)庫所包含大量信息是以表形式存放。數(shù)據(jù)庫中有表是獨立,有表之間存在一定關(guān)系,設(shè)計數(shù)據(jù)庫就是將大量信息經(jīng)過分析和歸納,分別存放到多個表中,確定表之間相互關(guān)系。15/719.3數(shù)據(jù)庫設(shè)計9.3.1慣用數(shù)據(jù)庫在Delphi7中要開發(fā)數(shù)據(jù)庫應(yīng)用程序,首要任務(wù)就是訪問數(shù)據(jù)庫。Delphi7能夠訪問各種數(shù)據(jù)庫,如Paradox、Access等基于文本數(shù)據(jù)庫、Oracal、Infomix、MicroSoftSQLServer等大型數(shù)據(jù)庫。對這些數(shù)據(jù)庫訪問能夠經(jīng)過BDE、ADO組件中OLEDB方式進(jìn)行訪問。16/719.3數(shù)據(jù)庫設(shè)計慣用數(shù)據(jù)庫有1.Paradox2.Access3.大型數(shù)據(jù)庫慣用大型數(shù)據(jù)庫有InterBase、Oracle、Sybase、Infomix、DB2和MicrosoftSQLServer等17/719.3數(shù)據(jù)庫設(shè)計9.3.2數(shù)據(jù)庫、表創(chuàng)建與維護(hù)1.創(chuàng)建數(shù)據(jù)庫【例9-1】在BDE中創(chuàng)建別名為Rsgl數(shù)據(jù)庫2.創(chuàng)建表【例9-2】在DatabaseDesktop中創(chuàng)建表Department,其結(jié)構(gòu)見表9-4。3.修改表結(jié)構(gòu)4.向表中添加統(tǒng)計【例9-3】向Department表中添加一批統(tǒng)計。18/719.3數(shù)據(jù)庫設(shè)計表9-4Department表結(jié)構(gòu)字段名數(shù)據(jù)類型長度部門號A3部門名稱A10責(zé)任人A8電話號碼A1119/719.3數(shù)據(jù)庫設(shè)計字段名數(shù)據(jù)類型長度職員號A6姓名A8性別A2出生日期D

8婚否L

1職稱A10職務(wù)A10基本工資$

6部門號A3簡歷M100表9-5Employees表結(jié)構(gòu)20/719.3數(shù)據(jù)庫設(shè)計表9-6Department表中統(tǒng)計信息部門號部門名稱責(zé)任人電話號碼001技術(shù)處丁一56221356002生產(chǎn)處楊帆4522554221/719.4慣用數(shù)據(jù)庫組件Delphi7提供了很多數(shù)據(jù)庫組件,使得開發(fā)數(shù)據(jù)庫應(yīng)用程序變得相當(dāng)輕易。Delphi7中為了創(chuàng)建數(shù)據(jù)庫應(yīng)用程序需要使用BDE數(shù)據(jù)集組件、數(shù)據(jù)訪問組件和數(shù)據(jù)控制組件。Delphi使用可視化組件創(chuàng)建數(shù)據(jù)庫應(yīng)用程序,跟創(chuàng)建其它非數(shù)據(jù)庫應(yīng)用程序一樣,數(shù)據(jù)庫組件都具備一定屬性,程序設(shè)計人員能夠在設(shè)計過程中設(shè)置組件各種屬性,也能夠在程序運(yùn)行過程中經(jīng)過程序來設(shè)置組件各種屬性。在Delphi組件面板上DataAccess和DataControl選項卡上組件是用于開發(fā)數(shù)據(jù)庫應(yīng)用程序。數(shù)據(jù)訪問組件、數(shù)據(jù)控制組件以及它們與數(shù)據(jù)庫、用戶界面有機(jī)聯(lián)絡(luò)如圖9-14所表示。22/719.4慣用數(shù)據(jù)庫組件圖9-14數(shù)據(jù)庫組件體系結(jié)構(gòu)23/719.4慣用數(shù)據(jù)庫組件9.4.1BDE數(shù)據(jù)集組件BDE選項卡上有數(shù)據(jù)集組件TTable、TQuery、TStoredProc以及與TQuery組件相聯(lián)絡(luò)TUpdateSQL組件。Database與Session組件用于建立數(shù)據(jù)庫連接;BatchMove組件用于復(fù)制數(shù)據(jù);NestedTable組件主要用于將主從關(guān)系數(shù)據(jù)嵌套在子數(shù)據(jù)庫表格中。BDEClientDataSet組件將ClientDataSet與BDE相關(guān)數(shù)據(jù)訪問組件結(jié)合起來。24/719.4慣用數(shù)據(jù)庫組件1.TTable組件(1)用途TTable組件是使用頻率最高數(shù)據(jù)庫組件,該組件能夠建立數(shù)據(jù)庫應(yīng)用程序(2)主要屬性①Active屬性②DatabaseName屬性③TableName屬性④TableType屬性⑤Exclusive屬性25/719.4慣用數(shù)據(jù)庫組件(3)與表創(chuàng)建與刪除相關(guān)屬性與方法①Fields屬性②FieldDefs屬性③CreateTable方法④DeleteTable方法⑤RenameTable方法(4)與數(shù)據(jù)庫表索引相關(guān)屬性和方法①IndexName屬性②IndexFieldCount屬性和IndexFields屬性③IndexDefs屬性④GetIndexNames方法26/719.4慣用數(shù)據(jù)庫組件(5)數(shù)據(jù)查詢①Locate方法和Lookup方法②GotoKey方法和FindKey方法③GotoNearest方法和FindNearest方法④SetKey方法(6)與表統(tǒng)計定位、增加、刪除、修改操作相關(guān)屬性和方法①BOF和EOF屬性②RecNo屬性③First方法和Last方法④Prior方法和Next方法⑤Append方法和AppendRecord方法⑥Insert方法和InsertRecord方法⑦Post方法和Edit方法⑧Cancel方法和Delete方法⑨SetRecords方法⑩EmptyTable方法27/719.4慣用數(shù)據(jù)庫組件【例9-4】在例9-3所創(chuàng)建數(shù)據(jù)庫基礎(chǔ)上使用Table組件實現(xiàn)查詢、插入、刪除、更新功效。查詢代碼編寫單擊設(shè)計界面中“查詢”按鈕,查詢employees.db數(shù)據(jù)庫表中統(tǒng)計。Delphi提供了各種實現(xiàn)查詢功效方法:①調(diào)用Locate方法在“查詢”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button1Click(Sender:TObject);beginTable1.Locate('姓名','丁一',[]);//查詢姓名為“丁一”統(tǒng)計end;28/719.4慣用數(shù)據(jù)庫組件②調(diào)用GotoKey方法在查詢之前,要確保查詢字段是關(guān)鍵字段或輔助索引字段,假如要查詢字段不是關(guān)鍵字段或輔助索引字段,則查詢過程失敗,系統(tǒng)會報錯。比如,在“查詢”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button1Click(Sender:TObject);beginTable1.IndexFieldNames:='職員號';//指定查詢字段

Table1.SetKey;//將Table1置為查詢狀態(tài)

Table1.Fields[0].AsString:='111001';//指定查詢字段值

Table1.GotoKey;//進(jìn)行查詢end;

29/719.4慣用數(shù)據(jù)庫組件插入功效實現(xiàn)①用Insert方法實現(xiàn)插入功效在“插入”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button2Click(Sender:TObject);beginTable1.Insert;//設(shè)置為插入狀態(tài)

Table1.Fields[0].AsString:='111002';//設(shè)置要插入值

Table1.Post;//將插入統(tǒng)計寫回數(shù)據(jù)庫End;30/719.4慣用數(shù)據(jù)庫組件②用Append方法實現(xiàn)插入功效在“插入”按鈕Onclick事件處理程序中加入以下代碼:(*實現(xiàn)在尾部插入一條職員號為“111003”統(tǒng)計*)procedureTForm1.Button2Click(Sender:TObject);beginTable1.Append;//設(shè)置為插入狀態(tài)

Table1.Fields[0].AsString:='111003';//設(shè)置要插入值

Table1.Post;//將插入統(tǒng)計寫回數(shù)據(jù)庫End;31/719.4慣用數(shù)據(jù)庫組件(4)刪除功效實現(xiàn)在“刪除”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button3Click(Sender:TObject);beginTable1.Delete;//刪除統(tǒng)計指針指向統(tǒng)計End;(5)更新功效實現(xiàn)

在“更新”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button3Click(Sender:TObject);beginTable1.Edit;//將Table控件置成編輯狀態(tài)

Table1.Fields[0].AsString:='王芳'Table1.Post;//將修改后統(tǒng)計寫回數(shù)據(jù)庫End;32/719.4慣用數(shù)據(jù)庫組件2.TQuery組件(1)用途Delphi中另一個主要數(shù)據(jù)集組件是TQuery,它需要使用SQL語言命令來進(jìn)行查詢。Delphi經(jīng)過TQuery組件實現(xiàn)了對SQL語言支持,在Delphi開發(fā)數(shù)據(jù)庫應(yīng)用程序中,SQL語句經(jīng)過TQuery組件傳遞到要訪問數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫引擎上,由數(shù)據(jù)庫引擎詳細(xì)執(zhí)行SQL語句,以實現(xiàn)對數(shù)據(jù)操作,而不是傳遞給Delphi中BDE,由BDE實施詳細(xì)SQL動作。33/719.4慣用數(shù)據(jù)庫組件(2)主要屬性①DatabaseName屬性②SQL屬性③Active屬性④Filter屬性⑤Filtered屬性⑥Params屬性⑦ExecSQL方法34/719.4慣用數(shù)據(jù)庫組件(3)靜態(tài)SQL語句和動態(tài)SQL語句Delphi中使用SQL語句有兩種:靜態(tài)SQL語句和動態(tài)SQL語句。靜態(tài)SQL語句是指在程序設(shè)計階段,設(shè)置TQuery組件SQL屬性。這么當(dāng)設(shè)計階段或者在程序執(zhí)行階段設(shè)置TQuery組件Active屬性為true時,或者在程序運(yùn)行期間調(diào)用TQuery組件Open或ExecSQL方法執(zhí)行SQL語句。動態(tài)SQL語句是指在SQL語句中包含一些參數(shù)變量,在程序運(yùn)行過程中這些變量值都是可變。比如能夠設(shè)置SQL屬性為:Select*fromEmployeeswhere姓名=:name;其中name變量便是一個參數(shù)變量,它由一個冒號引導(dǎo),在程序運(yùn)行過程中要為參數(shù)變量賦值才行,不然SQL語句不能正確執(zhí)行。35/719.4慣用數(shù)據(jù)庫組件(4)TQuery組件使用方法執(zhí)行SQL語句有兩種方式:一個是在設(shè)計期間把Active屬性設(shè)為true,程序會自動執(zhí)行SQL語句:另一個方式是在程序運(yùn)行期間調(diào)用TQuery組件Open或者ExecSQL方法執(zhí)行SQL語句。假如希望返回查詢結(jié)果,調(diào)用Open,假如不需要返回查詢結(jié)果,調(diào)用ExecSQL。在調(diào)用Open或ExecSQL之前,最好先調(diào)用Prepare方法經(jīng)過服務(wù)器做好準(zhǔn)備。執(zhí)行SQL所返回查詢結(jié)果實際上是數(shù)據(jù)集中滿足特定條件統(tǒng)計所組成子集,數(shù)據(jù)庫表格只顯示符合特定條件統(tǒng)計。在程序運(yùn)行過程中,首先調(diào)用TQuery組件Close方法關(guān)閉當(dāng)前SQL調(diào)用,然后調(diào)用SQLClear方法去除SQL屬性,并使用SQLAdd方法增加新SQL命令到SQL屬性中。36/719.4慣用數(shù)據(jù)庫組件在程序運(yùn)行過程中,首先調(diào)用TQuery組件Close方法關(guān)閉當(dāng)前SQL調(diào)用,然后調(diào)用SQLClear方法去除SQL屬性,并使用SQLAdd方法增加新SQL命令到SQL屬性中。因為在程序運(yùn)行過程中,程序設(shè)計人員是無法確定TQuery組件中SQL語句是否會返回一個查詢結(jié)果,所以執(zhí)行SQL語句時經(jīng)常在Try…Except模塊中。普通形式以下:TryQueryl.Open;ExceptQuery1.ExecSQL;end;37/719.4慣用數(shù)據(jù)庫組件假如使用動態(tài)SQL語句,首先調(diào)用Prepare方法,給動態(tài)SQL語句中參數(shù)賦值,然后再調(diào)用Open方法或ExecSQL方法。調(diào)用Prepare方法并不是必須,不過對于要屢次執(zhí)行TQuery組件中SQL屬性中動態(tài)SQL語句,調(diào)用Prepare能夠大大提升TQuery組件執(zhí)行SQL語句性能。38/719.4慣用數(shù)據(jù)庫組件【例9-5】在例9-3所創(chuàng)建數(shù)據(jù)庫基礎(chǔ)上使用TQuery組件實現(xiàn)查詢、插入、刪除、更新功效。圖9-17窗體界面設(shè)計39/719.4慣用數(shù)據(jù)庫組件查詢功效實現(xiàn)用TQuery組件實現(xiàn)查詢功效SQL語句基本格式以下:SELECT<字段名表或表示式>FROM<表名>[WHERE<條件>][ORDERBY<排序表示式>][GROUPBY<分組表示式>]其中SELECT和FROM子句是不可缺乏。40/719.4慣用數(shù)據(jù)庫組件SELECT子句指出查詢結(jié)果中顯示字段名,以及字段名和函數(shù)組成表示式等。若要顯示表中全部字段時,可用通配符“*”代替字段名表。FROM子句指定要查詢數(shù)據(jù)庫表。WHERE子句定義了查詢條件,必須緊跟FROM子句之后,其中<條件>子句是一個邏輯表示式。ORDERBY子句對查詢統(tǒng)計結(jié)果按照指定字段值進(jìn)行排序。GROUPBY子句對查詢統(tǒng)計結(jié)果按照指定字段值進(jìn)行分組另外,對表數(shù)據(jù)進(jìn)行查詢時,經(jīng)常需要對結(jié)果進(jìn)行匯總或計算,SQL語言聚集函數(shù)用于計算表中數(shù)據(jù),返回單個計算結(jié)果。慣用聚集函數(shù)主要有以下幾個:統(tǒng)計數(shù)目COUNT求和SUM平均值A(chǔ)VG最大值MAX最小值MIN

41/719.4慣用數(shù)據(jù)庫組件在“查詢”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button1Click(Sender:TObject);beginQuery1.Close;//修改SQL語句之前先關(guān)閉Query組件Query1.SQL.Clear;//去除舊SQL語句Query1.SQL.Add('SELECT*FROMemployees.db');//添加新SQL語句Query1.SQL.Add('WHERE姓名=''丁一''');Query1.Open;//執(zhí)行SQL語句end;42/719.4慣用數(shù)據(jù)庫組件插入功效實現(xiàn)用TQuery組件實現(xiàn)插入功效SQL語句基本格式以下:INSERTINTO[(<字段名表>)]VALUES該命令功效是在<表名>指定數(shù)據(jù)庫表中,插入統(tǒng)計。指定了插入統(tǒng)計中要賦值字段,VALUES(<字段值表>)指定了要給<字段名表>中字段所賦值。TQuery組件中執(zhí)行插入功效SQL語句要用ExecSQL方法執(zhí)行。43/719.4慣用數(shù)據(jù)庫組件在“插入”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button2Click(Sender:TObject);beginQuery1.Close;//修改SQL語句之前先關(guān)閉Query組件Query1.SQL.Clear;//去除舊SQL語句Query1.SQL.Add('INSERTINTOemployees.db');Query1.SQL.Add('(姓名)');Query1.SQL.Add('VALUES(''李宏偉'')');(*對于字符串中出現(xiàn)單引號要進(jìn)行特殊處理,所以字符型數(shù)據(jù),要用兩對單引號括起來)Query1.ExecSQL;//顯示插入結(jié)果Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('SELECT*FROMemployees.db');Query1.Open;end;44/719.4慣用數(shù)據(jù)庫組件刪除功效實現(xiàn)用TQuery組件實現(xiàn)刪除功效SQL語句基本格式以下:DELETEFROM<表名>[WHERE<條件>]該語句功效是從<表名>指定數(shù)據(jù)庫表中刪除滿足條件統(tǒng)計,若省略WHERE子句,表示刪除全部統(tǒng)計。TQuery組件中執(zhí)行刪除功效SQL語句要用ExecSQL方法執(zhí)行。45/719.4慣用數(shù)據(jù)庫組件在“刪除”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button3Click(Sender:TObject);beginQuery1.Close;Query1.SQL.Clear;Query1.SQL.Add('DELETEFROMemployees.db');Query1.SQL.Add('WHERE姓名=''李宏偉''');Query1.ExecSQL;Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('SELECT*FROMemployees.db');Query1.Open;end;46/719.4慣用數(shù)據(jù)庫組件更新功效實現(xiàn)用TQuery組件實現(xiàn)更新功效SQL語句基本格式以下:UPDATE<表名>SET<字段名>=<新字段值>[WHERE<條件>]該語句功效是將<表名>指定數(shù)據(jù)庫表中滿足條件統(tǒng)計中SET子句<字段名>所指定字段值設(shè)置為<新字段值>。若省略WHERE子句,表示更新全部統(tǒng)計指定字段值。TQuery組件中執(zhí)行更新功效SQL語句要用ExecSQL方法執(zhí)行。47/719.4慣用數(shù)據(jù)庫組件在“更新”按鈕Onclick事件處理程序中加入以下代碼:procedureTForm1.Button4Click(Sender:TObject);beginQuery1.Close;Query1.SQL.Clear;Query1.SQL.Add('UPDATEemployees.db');Query1.SQL.Add('SET基本工資=基本工資+200');Query1.SQL.Add('WHERE姓名=''楊帆''');Query1.ExecSQL;Query1.Close;Query1.SQL.Clear;Query1.SQL.Add('SELECT*FROMemployees.db');Query1.Open;end;48/719.4慣用數(shù)據(jù)庫組件3.其它BDE組件(1)TBatchMove組件TBatchMove組件能夠從數(shù)據(jù)集中成批地拷貝、刪除、更新、添加數(shù)據(jù)到另外一個數(shù)據(jù)表中。經(jīng)常被用來將桌面數(shù)據(jù)庫數(shù)據(jù)升級到SQL服務(wù)器上,或者保留查詢后數(shù)據(jù)用于分析。(2)TSession組件TSession組件連接了數(shù)據(jù)庫引擎BDE和應(yīng)用程序內(nèi)Database。在每一個數(shù)據(jù)庫應(yīng)用程序運(yùn)行時,Delphi會自動創(chuàng)建一個默認(rèn)TSesssion組件:Session。在應(yīng)用程序中加入新數(shù)據(jù)訪問組件和數(shù)據(jù)集組件時,這些組件會自動地處于默認(rèn)BDE會話期對象,即Session控制之下,對于簡單數(shù)據(jù)庫應(yīng)用程序只需要使用這個默認(rèn)TSession組件即可。另外,TSession組件還能提供訪問Paradox表和dBASE表口令,指定網(wǎng)絡(luò)控制文件所在目錄,控制數(shù)據(jù)表連接等功效。49/719.4慣用數(shù)據(jù)庫組件(3)TNestedTable組件經(jīng)過TNestedTable組件能夠訪問嵌套數(shù)據(jù)集中數(shù)據(jù)。它實現(xiàn)功效類似于Table組件,唯一不一樣是TNestedTable組件訪問數(shù)據(jù)是存放在嵌套數(shù)據(jù)表格中。50/719.4慣用數(shù)據(jù)庫組件9.4.2數(shù)據(jù)訪問(DataAccess)組件數(shù)據(jù)訪問組件建立了數(shù)據(jù)集組件和數(shù)據(jù)控制組件之間橋梁,它是編寫數(shù)據(jù)庫應(yīng)用程序所必需;在Delphi7中數(shù)據(jù)訪問組件位于組件面板DataAccess選項卡上,51/719.4慣用數(shù)據(jù)庫組件1.用途TDataSource組件在數(shù)據(jù)庫應(yīng)用程序編寫中經(jīng)常使用,是連接數(shù)據(jù)訪問組件TTable、TQuery等數(shù)據(jù)集組件和TDBGfid、TDImage等數(shù)據(jù)控制組件之間橋梁2.主要屬性(1)AutoEdit屬性(2)DataSet屬性(3)Enabled屬性(4)Edit方法(5)IsLinkedTo方法52/719.4慣用數(shù)據(jù)庫組件9.4.3數(shù)據(jù)控制(DataControls)組件數(shù)據(jù)控制組件位于組件面板DataControls選項卡上它們主要用于設(shè)計數(shù)據(jù)庫應(yīng)用程序用戶界面,對數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行瀏覽、編輯、插入、刪除等操作。數(shù)據(jù)控制組件既能把數(shù)據(jù)庫中數(shù)據(jù)顯示到窗口中,又能夠?qū)⑵浔旧斫?jīng)過修改數(shù)據(jù)寫回到數(shù)據(jù)庫中。數(shù)據(jù)控制組件使用相當(dāng)簡單,普通只需設(shè)置組件DataSource屬性為指定數(shù)據(jù)訪問組件,假如需要話,再設(shè)置數(shù)據(jù)控制組件DataField屬性,以說明需要顯示數(shù)據(jù)表中字段。53/719.4慣用數(shù)據(jù)庫組件1.TDBGrid組件(1)用途TDBGrid組件是最慣用采取網(wǎng)格方式顯示數(shù)據(jù)庫表中指定字段數(shù)據(jù)組件,它經(jīng)過DataSource屬性與TTable組件建立連接,顯示數(shù)據(jù)庫表中數(shù)據(jù),并能夠讓用戶編輯這些數(shù)據(jù)。(2)主要屬性①DataSource屬性②Columns屬性③FixedColor屬性④Options屬性⑤TitleFont屬性54/719.4慣用數(shù)據(jù)庫組件2.TDBText組件TDBText組件類似于Standard選項卡中Lable組件,是一個只讀數(shù)據(jù)控制組件,主要用于顯示數(shù)據(jù)集中字段類型為文本型字段值。該組件顯示是數(shù)據(jù)表中當(dāng)前統(tǒng)計指定字段值,因而它顯示內(nèi)容也是動態(tài),在其中顯示內(nèi)容伴隨統(tǒng)計指針移動而改變。但該組件不能用于編輯數(shù)據(jù)庫中數(shù)據(jù)。55/719.4慣用數(shù)據(jù)庫組件3.TDBEdit組件(1)用途TDBEdit組件是用于顯示編輯數(shù)據(jù)表中當(dāng)前統(tǒng)計各個字段值數(shù)據(jù)瀏覽組件,在應(yīng)用程序中,慣用一個TDBEdit組件來對應(yīng)表中一個字段,經(jīng)過設(shè)置TDBEdit組件DataSource、DataField屬性便能夠為TDBEdit組件指定表中對應(yīng)字段。(2)主要屬性①AutoSelect屬性②CharCase屬性③PasswordChar屬性④ReadOnly屬性56/719.4慣用數(shù)據(jù)庫組件4.TDBNavigator組件(1)用途TDBNavigator組件主要用來執(zhí)行在數(shù)據(jù)集中瀏覽數(shù)據(jù)和編輯數(shù)據(jù)操作,如統(tǒng)計定位、拖入統(tǒng)計、刪除統(tǒng)計、保留用戶對統(tǒng)計修改等。它提供了一組簡單明了控制按鈕,如圖9-21所表示,用戶單擊其中按鈕能夠向前向后移動統(tǒng)計指針、插入統(tǒng)計、修改已存在統(tǒng)計、投寄對統(tǒng)計修改、取消修改、刪除統(tǒng)計以及刷新統(tǒng)計顯示等。(2)主要屬性①DataSource屬性②VisibleButtons屬性③Hints屬性④ShowHint屬性⑤Visible屬性57/719.4慣用數(shù)據(jù)庫組件9.4.4ADO組件ADO(ActiveXDataObjects)是Microsoft企業(yè)面向各種數(shù)據(jù)高層接口,ADO組件這種層次接口被稱為OLEDB。ADO是在Microsoft數(shù)據(jù)訪問技術(shù)OLEDB上實現(xiàn)。OLEDB訪問速度快,能夠訪問數(shù)據(jù)類型豐富,包含對關(guān)系型數(shù)據(jù)庫、非關(guān)系型數(shù)據(jù)庫、電子郵件、文件系統(tǒng)及定制事務(wù)對象訪問。ADO組件編寫程序,可脫離BorlandBDE,數(shù)據(jù)控制組件在直接使用ADO組件,在使用ADO組件編寫程序,必須正確安裝ADO/OLEDB。58/719.4慣用數(shù)據(jù)庫組件ADO組件中有三個關(guān)鍵組件分別是用于數(shù)據(jù)庫連接TADOConnection組件、用于執(zhí)行SQL命令TADOCommand組件和用于執(zhí)行返回結(jié)果集合請求TADODataSet組件。還有三個與BDE兼容TADOTable、TADOQuery、TADOStoredProc組件,能夠用它們將BDE應(yīng)用程序移植到ADO中。另外有一個TRDSConnection組件,用于訪問遠(yuǎn)程多級應(yīng)用程序中數(shù)據(jù)。59/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例9.5.1總體設(shè)計人事管理系統(tǒng)就是要實現(xiàn)對單位職員進(jìn)行管理,整個系統(tǒng)由人事檔案管理和部門信息管理組成,包含信息輸入、添加、修改、刪除、查詢等功效。60/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例61/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例9.5.2數(shù)據(jù)庫設(shè)計數(shù)據(jù)庫設(shè)計是系統(tǒng)實現(xiàn)基礎(chǔ),分為概念設(shè)計、邏輯設(shè)計和物理設(shè)計三步,本系統(tǒng)共有兩個數(shù)據(jù)庫:Department和Employees。62/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例9.5.3程序設(shè)計1.主界面設(shè)計本系統(tǒng)采取多頁面方法來實現(xiàn),系統(tǒng)主界面如圖9-25所表示2.子模塊設(shè)計本系統(tǒng)共包含三個子模塊:職員管理模塊、部門管理模塊和信息查詢模塊。其界面分別如圖9-25、圖9-26和圖9-27所表示。各模塊功效實現(xiàn)基本相同,這里以職員管理模塊、部門管理模塊部分按鈕代碼以及信息查詢模塊查詢功效代碼為例來介紹各子模塊詳細(xì)實現(xiàn)方法,其它模塊實現(xiàn)請讀者自行完成。63/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例(1)界面設(shè)計(2)編寫代碼職員管理模塊“退出”按鈕OnClick事件處理代碼以下:procedureTForm1.BitBtn1Click(Sender:TObject);beginclose;end;64/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例部門管理模塊“添加”按鈕OnClick事件處理代碼以下:procedureTForm1.BitBtn6Click(Sender:TObject);beginBitBtn2.Enabled:=false;BitBtn3.Enabled:=false;BitBtn4.Enabled:=false;BitBtn5.Enabled:=false;BitBtn6.Enabled:=false;BitBtn7.Enabled:=false;BitBtn8.Enabled:=false;BitBtn9.Enabled:=True;BitBtn10.Enabled:=True;Table2.Append;end;65/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例“修改”按鈕OnClick事件處理代碼以下:procedureTForm1.BitBtn7Click(Sender:TObject);beginBitBtn2.Enabled:=false;BitBtn3.Enabled:=false;BitBtn4.Enabled:=false;BitBtn5.Enabled:=false;BitBtn6.Enabled:=false;BitBtn7.Enabled:=false;BitBtn8.Enabled:=false;BitBtn9.Enabled:=True;BitBtn10.Enabled:=True;Table2.Edit;end;66/719.5數(shù)據(jù)庫應(yīng)用程序綜合實例“刪除”按鈕OnClick事件處理代碼以下:procedureTForm1.BitBtn8Click(Sender:TObject);beginifTable2.IsEmptythenMessageDlg('當(dāng)前無數(shù)據(jù),請確認(rèn)!',mtE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論