第5章-數(shù)據(jù)庫應(yīng)用程序設(shè)計_第1頁
第5章-數(shù)據(jù)庫應(yīng)用程序設(shè)計_第2頁
第5章-數(shù)據(jù)庫應(yīng)用程序設(shè)計_第3頁
第5章-數(shù)據(jù)庫應(yīng)用程序設(shè)計_第4頁
第5章-數(shù)據(jù)庫應(yīng)用程序設(shè)計_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章數(shù)據(jù)庫應(yīng)用程序設(shè)計

本章主要內(nèi)容:數(shù)據(jù)庫基礎(chǔ)知識數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)Delphi7中的ADO組件簡介如何為應(yīng)用程序建立數(shù)據(jù)庫連接5.1數(shù)據(jù)庫基礎(chǔ)知識

5.1.1數(shù)據(jù)庫的基本概念1.數(shù)據(jù)數(shù)據(jù)(Data)是數(shù)據(jù)庫中存儲的基本對象。所謂數(shù)據(jù),就是能被計算機(jī)識別與處理的符號。數(shù)據(jù)的種類很多,如數(shù)字、文字、表格、圖形、圖像、聲音等都屬于數(shù)據(jù)。2.數(shù)據(jù)庫數(shù)據(jù)庫(Database,簡稱為DB)就是以一定的組織方式存儲在計算機(jī)存儲介質(zhì)中的互相關(guān)聯(lián)的數(shù)據(jù)的集合。它能以最佳方式、最少重復(fù)、最大獨立性為多種應(yīng)用提供共享服務(wù)。一個數(shù)據(jù)庫常包含許多數(shù)據(jù)表、索引信息以及其他相關(guān)信息。5.1數(shù)據(jù)庫基礎(chǔ)知識3.數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫管理系(DatabaseManngementSystem,簡稱為DBMS)是支持人們建立、使用和修改數(shù)據(jù)庫的軟件系統(tǒng)。它是位于用戶和操作系統(tǒng)之間層面的數(shù)據(jù)管理軟件。它為用戶或應(yīng)用程序提供訪問數(shù)據(jù)庫的方法,包括數(shù)據(jù)庫的建立、查詢、更新及各種數(shù)據(jù)控制。

DBMS可以分為層次型、網(wǎng)狀型、關(guān)系型和面向?qū)ο笮偷葞追N類型。數(shù)據(jù)庫在建立、使用和維護(hù)時由數(shù)據(jù)庫管理系統(tǒng)統(tǒng)一管理,統(tǒng)一控制。數(shù)據(jù)庫管理系統(tǒng)使用戶方便地定義數(shù)據(jù)和操作數(shù)據(jù),并能夠保證數(shù)據(jù)的安全性、完整性、并發(fā)性及發(fā)生故障后的系統(tǒng)恢復(fù)。通常DBMS包括以下主要功能:5.1數(shù)據(jù)庫基礎(chǔ)知識

(1)數(shù)據(jù)定義功能

(2)數(shù)據(jù)操縱功能

(3)數(shù)據(jù)庫的運行管理

(4)數(shù)據(jù)庫的建立和維護(hù)功能

(5)數(shù)據(jù)庫通信功能4.數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)(DataBaseSystem,簡稱為DBS)是指在計算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成,一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)及其開發(fā)工具、應(yīng)用系統(tǒng)構(gòu)成。如圖5-1所示。5.1數(shù)據(jù)庫基礎(chǔ)知識應(yīng)用系統(tǒng)應(yīng)用開發(fā)工具軟件DBMS編譯系統(tǒng)操作系統(tǒng)硬件圖5-1DBS的層次結(jié)構(gòu)

5.1數(shù)據(jù)庫基礎(chǔ)知識數(shù)據(jù)庫系統(tǒng)從最終用戶角度看,分為單用戶結(jié)構(gòu)、主從式結(jié)構(gòu)、分布式結(jié)構(gòu)和客戶/服務(wù)器結(jié)構(gòu)。

(1)單用戶結(jié)構(gòu)整個數(shù)據(jù)庫系統(tǒng)(包括應(yīng)用程序、DBMS、數(shù)據(jù))都裝在一臺微機(jī)上,由一個用戶獨占,不同機(jī)器之間不能共享數(shù)據(jù)。

(2)主從式結(jié)構(gòu)此結(jié)構(gòu)指一個主機(jī)帶多個終端的多用戶結(jié)構(gòu),數(shù)據(jù)庫系統(tǒng)(包括應(yīng)用程序、DBMS、數(shù)據(jù))都集中存放在主機(jī)上,所有處理任務(wù)都由主機(jī)完成,各個終端用戶并發(fā)地存取數(shù)據(jù)庫,共享數(shù)據(jù)資源。

(3)分布式結(jié)構(gòu)5.1數(shù)據(jù)庫基礎(chǔ)知識分布式結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)是地理上(或物理上)分散而邏輯上集中的數(shù)據(jù)庫系統(tǒng)。

(4)客戶/服務(wù)器結(jié)構(gòu)隨著工作站功能的增加和廣泛使用,人們開始把DBMS功能和應(yīng)用分開,網(wǎng)絡(luò)中專門用于執(zhí)行DBMS功能的計算機(jī)稱為數(shù)據(jù)庫服務(wù)器(簡稱服務(wù)器Server),其他安裝DBMS的外圍應(yīng)用開發(fā)工具、且支持用戶應(yīng)用的計算機(jī)稱為客戶機(jī)(Client),這就是客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫系統(tǒng)(Client/Server結(jié)構(gòu),簡稱C/S結(jié)構(gòu)),它是目前普遍使用的數(shù)據(jù)庫系統(tǒng)。5.1數(shù)據(jù)庫基礎(chǔ)知識5.關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫(RelationalDatabase)是以關(guān)系模型作為數(shù)據(jù)的組織存儲方式。關(guān)系數(shù)據(jù)庫通常包含多張表,表由記錄組成,記錄由字段組成。表(Table):一個表就是一組相關(guān)的數(shù)據(jù)按行排列,象一張表格一樣。字段(Field):在表中,每一列稱為一個字段。每一個字段都有相應(yīng)的描述信息,如數(shù)據(jù)類型、數(shù)據(jù)寬度等。記錄(Record):在表中,每一行稱為一條記錄。索引(Index):索引是按照指定字段建立的順序鏈表,能加快訪問數(shù)據(jù)庫的速度。5.1數(shù)據(jù)庫基礎(chǔ)知識6.數(shù)據(jù)庫應(yīng)用程序的設(shè)計數(shù)據(jù)庫應(yīng)用程序的設(shè)計包括兩個部分:

(1)數(shù)據(jù)庫設(shè)計

(2)應(yīng)用程序設(shè)計。5.1.2數(shù)據(jù)庫產(chǎn)品簡介

VFoxPro、Access、Paradox等屬于單用戶版數(shù)據(jù)庫產(chǎn)品。這類數(shù)據(jù)庫的數(shù)據(jù)被按照一定格式儲存在磁盤里,使用時由應(yīng)用程序通過相應(yīng)的驅(qū)動程序甚至直接對數(shù)據(jù)文件進(jìn)行讀取。

MSSQLServer、OracleUniversalServer、Informix-UniversalServer等屬于大型數(shù)據(jù)庫。這類數(shù)據(jù)庫的數(shù)據(jù)集中存放服務(wù)器上,統(tǒng)一由運行在服務(wù)器上的數(shù)據(jù)庫服務(wù)程序管理,用戶使用客戶端軟件通過網(wǎng)絡(luò)訪問數(shù)據(jù)庫服務(wù)程序。5.1數(shù)據(jù)庫基礎(chǔ)知識客戶/服務(wù)器數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)

這類型數(shù)據(jù)庫的特點是:適合于網(wǎng)絡(luò)應(yīng)用,可以同時被多個用戶所訪問,數(shù)據(jù)庫管理系統(tǒng)可以賦予不同的用戶以不同的安全訪問權(quán)限,支持的數(shù)據(jù)量大,能完全地支持SQL語言。5.1數(shù)據(jù)庫基礎(chǔ)知識5.1.3常用SQL語句1.SELECT語句

SELECT語句可以從數(shù)據(jù)庫中按用戶要求檢索數(shù)據(jù),并將查詢結(jié)果以表格的形式返回。

SELECT語句的語法形式如下:

SELECT[ALL|DISTINCT][TOPn[PERCENT]]字段列表

[INTO新表

]FROM源表

[WHERE搜索條件

][GROUPBY分組字段][HAVING搜索條件

][ORDERBY排序字段

[ASC|DESC]]5.1數(shù)據(jù)庫基礎(chǔ)知識(1)基本查詢SELECTau_fname,au_lname,phoneFROMauthors該查詢是把表中指定內(nèi)容列出來。(2)條件查詢SELECTau_fname,au_lname,phoneASTelephoneFROMauthorsWHEREstate='CA'僅返回state為‘CA’的行。(3)對查詢結(jié)果排序:SELECTau_fname,au_lname,phoneASTelephoneFROMauthorsWHEREstate='CA'andau_lname<>'McBadden'ORDERBYau_lnameASC5.1數(shù)據(jù)庫基礎(chǔ)知識2.INSERT語句將新行添加到表或視圖中。

INSERT語句的語法形式如下:INSERT[INTO]表名

[(字段1[,...字段n])]VALUES({DEFAULT|NULL|字段值1}[,...字段值n])

下面的例子中,通過Insert語句增加了一行記錄到publishers表中。INSERTpublishers(pub_id,pub_name,city,state)VALUES('9998','San','wash','wa')

字段名與字段值必須對應(yīng),且數(shù)據(jù)類型一致。5.1數(shù)據(jù)庫基礎(chǔ)知識3.DELETE語句DELETE語句用來從表中刪除數(shù)據(jù)。其語法為:DELETE[FROM]表名

[WHERE搜索條件

]

從publishers中刪除pub_id為‘9998’的記錄記錄的例子。DELETEpublishersWHEREpub_id='9998'

如果沒有指定WHERE子句,表示刪除所有記錄。從employee表中刪除所有記錄的例子。DELETEfromemployee5.1數(shù)據(jù)庫基礎(chǔ)知識4.UPDATE語句

UPDATE語句用以更新表中一列或多列數(shù)據(jù)值。其語法如下:UPDATE表名

SET字段名

={表達(dá)式

|DEFAULT|NULL}[,..n][WHERE搜索條件]

下面的語句把pub_id為9998的記錄的state字段修改為'NY'。UPDATEpublishersSETstate='NY'WHEREpub_id='9998'

如果不加上WHERE子句,則UPDATE語句會修改表中的每一行數(shù)據(jù)。5.1數(shù)據(jù)庫基礎(chǔ)知識5.CREATETABLE語句用CREATETABLE語句創(chuàng)建表快捷明了。其語法如下:CREATETABLE表名

(字段1類型(長度[,小數(shù)位數(shù)]){[DEFAULT默認(rèn)值]|[NULL]}[,...n])下例顯示了創(chuàng)建jobs表的定義。CREATETABLEjobs(job_id

smallint,

job_descvarchar(50)NOTNULLDEFAULT'NewPosition',

min_lvl

tinyintNOTNULL,

max_lvl

tinyintNOTNULL)5.1數(shù)據(jù)庫基礎(chǔ)知識6.ALTERTABLE語句

ALTERTABLE語句可以添加或刪除表的列。其語法如下:ALTERTABLE表名

{ADD[列名類型(長度

[,小數(shù)位數(shù)

])][,...n]|DROP

COLUMN列名

[,...n]}

下例添加一個允許空值的列,而且沒有通過DEFAULT定義提供值。各行的新列中的值將為NULL。ALTERTABLEdoc_exaADDcolumn_bVARCHAR(20)NULL下例從一中刪除字段column_b。ALTERTABLEdoc_exaDROP

COLUMNcolumn_b5.1數(shù)據(jù)庫基礎(chǔ)知識7.DROPTABLE語句刪除表定義及該表的所有數(shù)據(jù)、索引、觸發(fā)器、約束和權(quán)限規(guī)范。DROPTABLE表名表名:是要刪除表的名稱。例如:刪除employee表。DROPTABLEemployee5.2數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)5.2.1OLEDBOLEDB可提供對存儲在不同信息源的數(shù)據(jù)進(jìn)行統(tǒng)一訪問的能力,它是微軟開發(fā)的一種底層數(shù)據(jù)庫訪問技術(shù)。常用OLEDB提供者有:

MicrosoftJet4.0OLEDBProvider

用于微軟Access數(shù)據(jù)庫。

MicrosoftOLEDBProviderforODBCDrivers

用于ODBC數(shù)據(jù)源。

MicrosoftOLEDBProviderforOracle

用于Oracle數(shù)據(jù)庫。

MicrosoftOLEDBProviderforSQLServer

用于微軟SQLServer數(shù)據(jù)庫。5.2數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)5.2.2ADO(ActiveXDataObjects)

ADO是MicrosoftActiveXDataObjects的縮寫,也是微軟開發(fā)的適用于Windows操作系統(tǒng)的數(shù)據(jù)庫訪問技術(shù)。它位于OLEDB的上層,封裝了OLEDB的所有功能,為那些不能直接訪問OLEDB的語言(如VisualBasic和腳本語言)提供編程接口。5.2數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)

OLEDB、ADO與編程語言和數(shù)據(jù)存儲的關(guān)系

5.2數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)5.2.3ODBCODBC(OpenDatabaseConnectivity)即開放的數(shù)據(jù)庫連接技術(shù)。ODBC是微軟和一些數(shù)據(jù)庫廠商聯(lián)合制定的,它通過應(yīng)用程序接口API提供了一種跨平臺的,用來訪問關(guān)系數(shù)據(jù)庫中數(shù)據(jù)的手段,是訪問數(shù)據(jù)庫的通用方法。數(shù)據(jù)源是對數(shù)據(jù)庫的有名聯(lián)接,即DSN。用戶DSN

系統(tǒng)DSN

文件DSNODBC添加新數(shù)據(jù)源的步驟:5.2數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)5.2.4數(shù)據(jù)庫應(yīng)用程結(jié)構(gòu)在Delphi7的數(shù)據(jù)庫應(yīng)用程序中,最基本的構(gòu)成是3類組件:數(shù)據(jù)控制組件、數(shù)據(jù)集組件和數(shù)據(jù)源組件。

(1)數(shù)據(jù)控制組(DataControl)件用于顯示和修改數(shù)據(jù)庫中的信息,為用戶操作數(shù)據(jù)庫提供一個可視化的界面,常用的組件有TDBEdit、TDBText、TDBGrid、TDBGrid。

(2)數(shù)據(jù)集組件(DataSet)一方面通過ADO與實際的數(shù)據(jù)庫相連接,另一方面通過TDataSource組件與數(shù)據(jù)庫控制組件相連,常用的有TADODataSet、TADOTable、TADOQuery組件。

(3)數(shù)據(jù)源組件(DataSource)負(fù)責(zé)將數(shù)據(jù)集組件和數(shù)據(jù)控制組件連接起來,。5.2數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)使用ADO組件編寫的應(yīng)用程序通常具有以下結(jié)構(gòu):圖5-8基于ADO的數(shù)據(jù)庫應(yīng)用程序結(jié)構(gòu)5.3Delphi7中的ADO組件

Delphi對ADO技術(shù)的支持,是通過將ADO常用對象封裝進(jìn)Delphi的ADO組件中,并結(jié)合Delphi本身的開放式數(shù)據(jù)庫組件結(jié)構(gòu)實現(xiàn)的。使用ADO組件,可以迅速實現(xiàn)數(shù)據(jù)庫連接,建立數(shù)據(jù)庫應(yīng)用,使用ADO組件更利于我們升級和維護(hù)開發(fā)的系統(tǒng)。通過ADO連接的數(shù)據(jù)庫應(yīng)用程序分發(fā)時不需要進(jìn)行額外配置,Windows系統(tǒng)中已默認(rèn)安裝了ADO的支持組件MDAC。

Delphi的ADO組件共有7個,位于ADO面板上,分別是:TADOConnection、TADODataSet、TADOTable

TADOQuery、TADOStoredProc、TADOCommand和RDSConnection。其中后面的6個組件可以直接連接到數(shù)據(jù)庫,但更為常用的方式是通過TADOConnection組件連接到數(shù)據(jù)庫。5.3Delphi7中的ADO組件這些組件的作用如下:TADOConnection:該組件用于建立數(shù)據(jù)庫的連接。TADODataSet:這是ADO提取及操作數(shù)據(jù)庫數(shù)據(jù)的主要數(shù)據(jù)集,該組件可以從一個或多個基表中提取數(shù)據(jù)。TADOTable:主要用于操作和提取單個基表的數(shù)據(jù)。TADOQuery:該組件是通過SQL語句實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的提取及操作。TADOStoredProc:該數(shù)據(jù)集是專門用于運行數(shù)據(jù)庫中的存儲過程的。TADOCommand:該組件用于運行一些SQL命令。RDSConnection:一個進(jìn)程或一臺計算機(jī)傳遞到另一個進(jìn)程或計算機(jī)的數(shù)據(jù)集合,用于遠(yuǎn)程數(shù)據(jù)訪問。5.3Delphi7中的ADO組件圖5-9ADO各組件之間的關(guān)系5.4連接數(shù)據(jù)庫5.4.1連接本地數(shù)據(jù)庫將TADOConnection

組件連接到數(shù)據(jù)庫是通過設(shè)置ConnectionString

屬性實現(xiàn)的。1.使用OLDDB提供者連接ACCESS數(shù)據(jù)庫2.使用ODBC數(shù)據(jù)源連接Paradox數(shù)據(jù)庫3.5.2連接到數(shù)據(jù)庫服務(wù)器【例5-1】編寫一個簡單數(shù)據(jù)庫應(yīng)用程

溫馨提示

  • 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

提交評論