畢設(shè)論文 餐飲管理系統(tǒng)_第1頁
畢設(shè)論文 餐飲管理系統(tǒng)_第2頁
畢設(shè)論文 餐飲管理系統(tǒng)_第3頁
畢設(shè)論文 餐飲管理系統(tǒng)_第4頁
畢設(shè)論文 餐飲管理系統(tǒng)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第 46 頁 共 46 頁 引言 現(xiàn)代社會正在進(jìn)入信息社會,蓬勃發(fā)展的餐飲業(yè)作為第三產(chǎn)業(yè)的重要組成部分在國民經(jīng)濟中的作用日益突出;同時,快節(jié)奏的生活,要求餐飲業(yè)跟上時代的步伐,提供高質(zhì)量、快速的服務(wù)。傳統(tǒng)的手工操作管理存在著許多無法避免的問題,例如:(1)人工計算帳單金額容易出現(xiàn)差錯(2)收銀工作中跑單、漏單、偷錢現(xiàn)象普遍(3)個別服務(wù)員作弊、改單、宰客情形時有發(fā)生(3)客人消費單據(jù)難以保存和查詢(4)無法對大量營業(yè)數(shù)據(jù)進(jìn)行統(tǒng)計分析隨著人民生活水平的提高,餐飲業(yè)在服務(wù)行業(yè)中占有越來越重要的地位。努力在當(dāng)前餐飲行業(yè)日趨激烈的競爭中脫穎而出,已成為每位餐飲業(yè)經(jīng)營者所追求的目標(biāo)。經(jīng)過多年發(fā)展,餐飲

2、管理已經(jīng)逐漸由定性管理,進(jìn)入到重視定量管理的科學(xué)階段。眾所周知,在定量管理的具體實現(xiàn)方法和手段方面,最有效的工具就是電腦管理。國內(nèi)餐飲業(yè)的由于管理成本過高、服務(wù)效率低下,面臨國外餐飲業(yè)的入侵,處于競爭的劣勢;國外采用的新型的餐飲管理系統(tǒng),極大地提高了管理效率和服務(wù)水平,國內(nèi)的類似產(chǎn)品比較落后,且無法滿足餐廳的實際需要。為了促進(jìn)餐飲業(yè)的現(xiàn)代化,提高我國餐飲業(yè)的競爭力,急切需要真正適合餐廳的實際需要的餐飲管理系統(tǒng)。本系統(tǒng)就是針對以上問題設(shè)計的。系統(tǒng)實現(xiàn)了一般餐飲企業(yè)日常營運的全面自動管理,并可以適用于管理需求十分相似的娛樂企業(yè)。 本論文首先介紹了餐飲管理系統(tǒng)的概況,對市場上現(xiàn)有的管理系統(tǒng)存在的問題

3、進(jìn)行了分析,指出了開發(fā)適合餐廳實際需要的餐飲管理系統(tǒng)的必要性,然后介紹了餐飲管理系統(tǒng)的相關(guān)基礎(chǔ)知識,其中包括sql server數(shù)據(jù)庫管理系統(tǒng)和delphi 數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu),介紹了這兩種工具的基本知識和特點,還有c/s模式的理論和特點,再介紹了本餐飲管理系統(tǒng)的設(shè)計分析和應(yīng)用程序設(shè)計,具體分析了各大模塊的設(shè)計實現(xiàn),這是本文的重點所在。1 概述1.1 餐飲業(yè)的發(fā)展、現(xiàn)狀以及存在的問題 “民以食為天”,作為衣食住行的一部分,飲食在生活中具有極其重要的地位。在原始社會,人類在飲食方面的要求僅限填腹,僅僅是生存的需要,處于與自然作斗爭的范疇,還談不上其他方面的意義。隨著人類社會的發(fā)展,生產(chǎn)力的提

4、高使得生產(chǎn)方式發(fā)生巨大的變化,社會產(chǎn)品逐漸豐富,人們對飲食有了更多的選擇。人類經(jīng)歷工業(yè)時代進(jìn)入信息時代后,飲食己經(jīng)從生存需要逐步發(fā)展成為具有多種內(nèi)涵的經(jīng)濟文化現(xiàn)象,加上民族文化背景,飲食往往成為民族和文化的一種象征。 而餐飲業(yè)也隨著社會的發(fā)展,從第一產(chǎn)業(yè)、第二產(chǎn)業(yè)中分化出來,逐漸成為第三產(chǎn)業(yè)的重要組成部分,在國民經(jīng)濟中發(fā)揮重要的作用。 我國的餐飲業(yè)歷史悠長,形成了別具一格的飲食文化,但是直到現(xiàn)代餐飲業(yè)才真正成為產(chǎn)業(yè)。 近二十多年來,我國餐飲業(yè)發(fā)展迅猛,日新月異,備種風(fēng)味特色,各種經(jīng)營形式,各種組織結(jié)構(gòu)的餐廳企業(yè)星羅棋布。當(dāng)前中國城鎮(zhèn)擁有餐館300多萬家,1999年銷售額達(dá)到3199.6億,20

5、00年達(dá)到3600億元,市場十分廣闊。與此同時,國外的餐飲業(yè)也加快了進(jìn)入國內(nèi)市場的步伐,“麥當(dāng)勞”、“肯德基”兩家美國快餐企業(yè)在進(jìn)入中國十年以來,根據(jù)中國的特色調(diào)整經(jīng)營策略,已經(jīng)占據(jù)了一定的市場份額,而更多的外國餐飲業(yè)也不甘落后,爭相進(jìn)入我國市場。異國餐飲文化在國內(nèi)餐飲市場相繼出現(xiàn),國內(nèi)外餐飲行業(yè)相互滲透、交叉融合的趨勢日益明顯,表明我國餐飲業(yè)正向橫向和縱向發(fā)拓展,也說明我國餐飲業(yè)正面臨著日益嚴(yán)峻的競爭。(1)經(jīng)營方式落后,經(jīng)營特色不顯著:許多餐飲業(yè)仍保留傳統(tǒng)的經(jīng)營觀念模式,菜譜上的菜名往往無法及時更新,讓人大失所望。(2)生產(chǎn)方式和管理服務(wù)水平低,科技含量不高。我國的餐飲業(yè)仍然以繁重的體力勞

6、動加簡單工具的手工作坊式的生產(chǎn)方式為主,管理水平低下,無法適應(yīng)信息時代快節(jié)奏的生活。 在與國外餐飲業(yè)的激烈競爭中,民族餐飲業(yè)由于經(jīng)營方式和管理手段落后,在競爭中處于劣勢。餐飲業(yè)的有識之士已經(jīng)看到了傳統(tǒng)餐飲業(yè)的缺點,開始實施新的經(jīng)營方式,借助新技術(shù)向現(xiàn)代餐飲轉(zhuǎn)變。在這一前提下,發(fā)展餐飲管理系統(tǒng)對提高餐飲業(yè)的科技含量,提高勞動生產(chǎn)率,節(jié)約成本,取得經(jīng)營優(yōu)勢有重要的意義。 信息化社會對餐飲業(yè)提出新的挑戰(zhàn)但是也提供新的機遇。生活節(jié)奏加快,餐飲業(yè)也必須跟上時代的步伐;日益發(fā)展的市場和日益嚴(yán)峻的競爭,是的我國餐飲業(yè)面臨著一個新的時代難題,經(jīng)營管理方式的落后曾經(jīng)是民族餐飲業(yè)發(fā)展的桂桔;而先進(jìn)的技術(shù)提供了減輕

7、體力勞動,改善服務(wù)質(zhì)量,提高經(jīng)營管理效率的途徑。 開發(fā)符合我國國情的餐飲管理系統(tǒng)是市場的呼喚,是餐飲管理的需要,是社會信息化的必然。1.2 餐飲管理系統(tǒng)的發(fā)展以及現(xiàn)狀 餐飲管理系統(tǒng)是在餐廳中使用的計算機系統(tǒng),能部分替代體力勞動,能存儲、處理并傳遞業(yè)務(wù)數(shù)據(jù),簡化餐廳的服務(wù)過程,加快服務(wù)速度;使餐廳管理者從繁雜的日常管理活動中解脫出來,專注于提高餐廳的服務(wù)水平和管理效率。餐飲管理系統(tǒng)經(jīng)歷了近十年的發(fā)展,日趨完善,受到廣大餐飲業(yè)人士的歡迎。1.2.1餐飲管理系統(tǒng)的發(fā)展階段 餐飲管理系統(tǒng)是社會發(fā)展和技術(shù)進(jìn)步的產(chǎn)物。二十世紀(jì)80年代,國外餐廳中開始使用電子收銀系統(tǒng),改善了資金的管理;而真正功能意義上的餐

8、飲管理系統(tǒng)是在90年代初才開始出現(xiàn)并逐步發(fā)展,其發(fā)展經(jīng)歷了以下三個階段:(1)純軟件型的餐飲管理系統(tǒng):是微機上運行的一套由庫存管理、資金管理、人事管理和業(yè)務(wù)管理等軟件模塊的組合而成的純軟件型的餐飲管理系統(tǒng)。該系統(tǒng)提供用微機點菜的功能,并能存儲業(yè)務(wù)數(shù)據(jù)。由子是單機服務(wù),服務(wù)能力有限,不少業(yè)務(wù)數(shù)據(jù)是事后錄入的,缺少實時性;由于缺乏相應(yīng)的電子化網(wǎng)絡(luò)支撐,這類系統(tǒng)不能加快餐廳的服務(wù)速度,提高服務(wù)速度,不能滿足餐飲業(yè)經(jīng)營者最迫切的需要。(2)有線終端式餐飲管理系統(tǒng):這類系統(tǒng)由主機以及與主機通過有線互連的觸摸屏終端組成,由有線終端向顧客提供點菜等服務(wù),主機軟件提供有關(guān)數(shù)據(jù)和信息管理功能以及業(yè)務(wù)數(shù)據(jù)統(tǒng)計報表

9、功能,能處理業(yè)務(wù)信息并產(chǎn)生必要的單據(jù)輸出。由多臺有線終端同時向顧客提供服務(wù),顧客的操作結(jié)果通過網(wǎng)絡(luò)傳送,簡化了服務(wù)流程,提高了服務(wù)速度,餐廳和顧客同時享受到了便利。但這類系統(tǒng)有一個固有的缺陷,那就是它是有線連接的,擴展能力有限:而且觸摸屏本身體積較大,安裝困難,因此終端數(shù)目受到限制,也限制了系統(tǒng)的推廣和普及。(3)無線終端式餐飲管理系統(tǒng):無線終端式的餐飲管理系統(tǒng)的終端通過無線方式傳送數(shù)據(jù),因此具有靈活性的特點。它是在吸取前兩代餐飲管理系統(tǒng)的長處,克服它們?nèi)秉c的基礎(chǔ)上開發(fā)的系統(tǒng):在滿足餐飲業(yè)經(jīng)營者需要的同時,著重于提高終端的便攜性并降低系統(tǒng)的使用、安裝和擴展等方面的難度。由于終端通過無線連接,除

10、了初期工程安裝時必須安裝基站外,沒有其他安裝上的困難;在系統(tǒng)使用過程中可以隨意增加終端,而不影響系統(tǒng)的運行:它代表了餐飲管理系統(tǒng)的發(fā)展趨勢和潮流。目前市場上的無線終端式餐飲管理系統(tǒng)主要有兩類,一種是紅外終端式,另一種是射頻無線終端式。綜上所述,第三類的餐飲管理系統(tǒng)安裝簡單、易于擴展且能較好地滿足餐廳的實際需要,因此受到客戶的青睞。1.2.2國內(nèi)外餐飲管理系統(tǒng)現(xiàn)狀: 在日韓兩國,餐飲業(yè)正在進(jìn)行一次革命性的轉(zhuǎn)變。由于兩國餐飲業(yè)發(fā)展比較成熟,激烈的市場競爭促使餐飲業(yè)管理人員設(shè)法提高管理效率和服務(wù)水平:全面、細(xì)致的管理還為納稅和審核提供了有力的輔助手段,因此這類系統(tǒng)的開發(fā)也得到政府機關(guān)的支持和提倡。目

11、前,這兩國的餐飲管理系統(tǒng)已經(jīng)很成熟,有不同規(guī)模的、多種技術(shù)特色的餐飲管理系統(tǒng)出現(xiàn)在市場上,而基于射頻無線的系統(tǒng)在餐廳中廣泛使用。 我國的餐飲業(yè)管理系統(tǒng)的發(fā)展落后于國外,目前處于第二階段、第三階段的過度階段。早在90年代初,我國不少軟件公司致力于開發(fā)餐飲管理系統(tǒng),較知名的有廣州的黑馬,深圳的科利華,連邦等等。近幾年,餐飲管理系統(tǒng)的研究也逐漸跟上國外的步伐,已經(jīng)有基于紅外的餐飲管理系統(tǒng)在餐廳中使用。但是還未見基于射頻無線的系統(tǒng)。1.3 餐飲管理系統(tǒng)的開發(fā)背景隨著我國國民經(jīng)濟的穩(wěn)定增長,城鎮(zhèn)居民可支配收入不斷增加,人民不再以“溫飽”為滿足,更加注重飲食的質(zhì)量與檔次。據(jù)國家統(tǒng)計局統(tǒng)計數(shù)字顯示,20世紀(jì)

12、90年代以來,我國城鎮(zhèn)居民在外就餐大幅度增長,大眾化餐飲成為市場主流,這極大推進(jìn)了餐飲行業(yè)的快速發(fā)展。另外,隨著我國正式加入wto與北京申辦2008年第29屆奧運會的成功,餐飲業(yè)在未來幾年內(nèi)將始終保持一個較高的發(fā)展速度。目前我國城鎮(zhèn)擁有餐館350多萬家,多數(shù)餐館規(guī)模小、服務(wù)質(zhì)量差。隨著餐飲業(yè)的鏈鎖和國外餐飲巨頭的加入,餐飲業(yè)的競爭將會越來越激烈。要想在競爭中處于不敗之地,必須在管理、服務(wù)等方面提高服務(wù)管理意識。經(jīng)過多年發(fā)展,餐飲管理已經(jīng)逐漸由定性管理,進(jìn)入到重視定量管理的科學(xué)階段,面對當(dāng)前餐飲業(yè)普遍的產(chǎn)業(yè)化程度低,管理手段、管理技術(shù)落后等問題,使用計算機技術(shù)管理在很多程度上可以幫助餐飲企業(yè)克服

13、這些困難。眾所周知,在定量管理的具體實現(xiàn)方法和手段方面,最有效的工具就是電腦管理。計算機管理系統(tǒng)可以提高餐飲企業(yè)的管理水平,節(jié)省大量人力、物力和財力,使經(jīng)營管理更加科學(xué)有序、經(jīng)營物流清晰,經(jīng)營狀況詳實、準(zhǔn)確。使用計算機管理系統(tǒng)可以給餐飲行業(yè)帶來以下的好處:(1) 可以提高工作效率日常需要的各種報表再不需要人工統(tǒng)計,電腦自動生成。(部分酒樓設(shè)專人負(fù)責(zé)統(tǒng)計工作,使用系統(tǒng)后,就不需要了)點菜、分單、出品、結(jié)帳、庫存信息全部一體化管理,大大提高工作效率,降低管理難度,酒樓管理變得非常輕松。(2)可以增加管理水平智能化安全庫存線確定功能,確保最合理的庫存水平,在不需要憑借老員工的經(jīng)驗確定了??蛻絷P(guān)系管理

14、模塊,確保您及早發(fā)現(xiàn)潛在的重要客戶。(3)可以增加收入菜品組成分析能確保菜品配料保持穩(wěn)定,進(jìn)一步確保菜品質(zhì)量,促進(jìn)銷售,利于品牌營造。自動結(jié)帳使您可以任意增刪菜品,隨時調(diào)整菜品價格來適應(yīng)競爭需要,提高競爭力。(4)可以節(jié)約成本物品采購價格分析可以有效降低采購價格,確保成本降低。物品過期告警能減少物品過期現(xiàn)象出現(xiàn),減少浪費。庫存管理自動化能降低庫存盤點難度,可以適當(dāng)提高庫存盤點頻率,有效減少庫存物品流失。(5)提高酒樓的形象應(yīng)用計算機輔助管理酒樓,無形中提高了酒樓的形象。 綜上所述,因此,開發(fā)出這樣一套功能完整的餐飲管理軟件,必定是符合社會發(fā)展的需要,符合人們的需求。2 餐飲管理系統(tǒng)有關(guān)基礎(chǔ)知識

15、2.1 sql server 數(shù)據(jù)庫管理系統(tǒng)簡介2.1.1數(shù)據(jù)庫的特點與文件系統(tǒng)相比 數(shù)據(jù)庫系統(tǒng)有以下特點:(1)數(shù)據(jù)的結(jié)構(gòu)化 在文件系統(tǒng)中,文件之間不存在聯(lián)系 文件內(nèi)部的數(shù)據(jù)一般是有結(jié)構(gòu)的,但是從數(shù)據(jù)的整體來說是沒有結(jié)構(gòu)的 數(shù)據(jù)庫系統(tǒng)也包含許多單獨的文件但是它們之間相互聯(lián)系 在整體上也服從一定的結(jié)構(gòu)形式從而能更適應(yīng)管理大量數(shù)據(jù)的需求 (2)數(shù)據(jù)共享 共享是數(shù)據(jù)庫系統(tǒng)的目的,也是其最重要的特點,一個數(shù)據(jù)庫中的數(shù)據(jù)不僅可以為同一企業(yè)或者組織內(nèi)部的各部門共享,還可以為不同國家地區(qū)的用戶所共享. (3) 數(shù)據(jù)獨立性 在文件系統(tǒng)中,文件和應(yīng)用程序相互依賴,一方的改變總要影響另一方的改變,數(shù)據(jù)庫系統(tǒng)則力

16、求較少這種依賴性,實現(xiàn)數(shù)據(jù)的獨立性. (4)可控冗余度 數(shù)據(jù)專用后 每個用戶擁有并使用自己的數(shù)據(jù),許多數(shù)據(jù)就會出現(xiàn)重復(fù),這就是數(shù)據(jù)冗余.實現(xiàn)共享后,同一數(shù)據(jù)庫中的數(shù)據(jù)集中存儲 ,共同使用因而易于避免重復(fù) ,減少和控制數(shù)據(jù)的冗余.2.1.2用戶分類數(shù)據(jù)庫系統(tǒng)的用戶是指使用和訪問數(shù)據(jù)庫中數(shù)據(jù)的人,它包括以4種: (1)數(shù)據(jù)庫設(shè)計者 負(fù)責(zé)整個數(shù)據(jù)庫系統(tǒng)的設(shè)計工作設(shè)計者依據(jù)用戶的需求設(shè)計合適的表和格式來存放數(shù)據(jù)并對整個數(shù)據(jù)庫的存取權(quán)限做出規(guī)劃 這些工作完成后 即可交給數(shù)據(jù)庫管理員進(jìn)行管理。注意:這里的設(shè)計者一般并不只是指一個人,而往往是一組人.(2)數(shù)據(jù)庫管理員 數(shù)據(jù)庫管理員 database adm

17、inistrator dba 決定數(shù)據(jù)庫種的數(shù)據(jù)并對這些數(shù)據(jù)進(jìn)行修改,維護(hù),監(jiān)督數(shù)據(jù)庫的運行狀況.數(shù)據(jù)庫管理員的任務(wù)主要包括:決定數(shù)據(jù)庫的內(nèi)容, 管理賬號,備份和還原數(shù)據(jù)以及提高數(shù)據(jù)庫的運行效率. (3)應(yīng)用程序設(shè)計者 負(fù)責(zé)編寫訪問數(shù)據(jù)庫的應(yīng)用程序 使得用戶可以很友好地使用數(shù)據(jù)庫,可以使用 visual basic visual c+ delphi 等來開發(fā)數(shù)據(jù)庫應(yīng)用程序.(4)普通用戶 普通用戶只需操作應(yīng)用程序來訪問所需要查詢的數(shù)據(jù),不需要關(guān)心數(shù)據(jù)庫地具體格式及其維護(hù)和管理等問題. 在實際工作中, 數(shù)據(jù)庫管理員利用賬號來控制每個用戶地訪問權(quán)限,每個用戶都由自己的賬號和密碼 ,使用此賬號和密碼

18、,用戶可以登錄數(shù)據(jù)庫,并在允許的權(quán)限范圍內(nèi)訪問數(shù)據(jù)庫種的數(shù)據(jù).2.1.3數(shù)據(jù)庫管理系統(tǒng) (bdms) 數(shù)據(jù)庫管理系統(tǒng) (dbms) 是指幫助用戶建立,使用和管理數(shù)據(jù)庫的軟件系統(tǒng) ,他通常有下面三個組成部分:(1)數(shù)據(jù)描述語言( data description language ddl ) 用來描述數(shù)據(jù)庫的結(jié)構(gòu) 供用戶建立數(shù)據(jù)庫(2)數(shù)據(jù)操作語言 (data manipulation language dml) 供用戶對數(shù)據(jù)庫進(jìn)行數(shù)據(jù)的查詢(數(shù)據(jù)的檢索和統(tǒng)計等)和存儲(數(shù)據(jù)的增加,刪除和修改等)等操作. (3)其他管理和控制程序 包括安全通訊控制和工作日志等.一般情況下ddl和 dml組成一個

19、一體化的語言,對于關(guān)系型數(shù)據(jù)庫,最常用的就是 sql structure query language語言,幾乎所有的數(shù)據(jù)庫管理系統(tǒng)都提供了對 sql 語言的支持. 對 ddl 和 dml數(shù)據(jù)庫管理系統(tǒng)都帶有翻譯程序,與普通高級語言類似翻譯程序也可以分為編譯執(zhí)行和解釋執(zhí)行兩種方式, 如 sql語言,既有解釋型也有編譯型. 數(shù)據(jù)庫管理系統(tǒng)提供了用戶和數(shù)據(jù)庫之間的軟件界面,使得用戶更方便地操作數(shù)據(jù)庫 ,一般來說它應(yīng)如下功能:(1)數(shù)據(jù)定義 和高級語言類似,需要定義需要的數(shù)據(jù)類型。(2)數(shù)據(jù)處理 dbms 必須提供用戶對數(shù)據(jù)庫的存取能力,包括記錄地增加,修改,檢索和刪除等。 (3)數(shù)據(jù)安全 管理和監(jiān)

20、督用戶的權(quán)限 ,防止用戶有任何破壞或者惡意的意圖. (4)效率 dbms 應(yīng)保證數(shù)據(jù)庫的高效率運行, 以提高數(shù)據(jù)檢索和修改的速度 . 2.1.4網(wǎng)絡(luò)結(jié)構(gòu)可依據(jù)數(shù)據(jù)的多少,使用的人數(shù)與硬件設(shè)備等條件,將數(shù)據(jù)庫管理系統(tǒng)分為4種網(wǎng)絡(luò)結(jié)構(gòu):main frame 大型數(shù)據(jù)庫,本地小型數(shù)據(jù)庫,分布式數(shù)據(jù)庫和客戶機/服務(wù)器數(shù)據(jù)庫。下面分別介紹這4種網(wǎng)絡(luò)結(jié)構(gòu),并重點介紹客戶機/服務(wù)器數(shù)據(jù)庫。(1)main frame 大型數(shù)據(jù)庫 大型數(shù)據(jù)庫是由一臺性能很強的計算機(稱為主機或者數(shù)據(jù)庫服務(wù)器)負(fù)責(zé)處理龐大的數(shù)據(jù) 用戶通過終端機與大型主機相連,以存取數(shù)據(jù)。main frame 大型數(shù)據(jù)庫的所有檢索和修改的功能都由

21、主機來完成 因此 在有多人使用時 主機會非常忙碌 使得反映比較緩慢 另外 大型主機的性能很強 但價格都相當(dāng)昂貴一般只有大型機構(gòu)使用。 (2)本地小型數(shù)據(jù)庫 在用戶較少,數(shù)據(jù)量也不大的情況下,可使用本地小型數(shù)據(jù)庫,一般是由個人建立的個人數(shù)據(jù)庫,常用的dbms有access和 foxpro 等。 (3)分布式數(shù)據(jù)庫 分布式數(shù)據(jù)庫就是為了解決main frame 大型數(shù)據(jù)庫反映緩慢的問題而提出的, 它是由多臺數(shù)據(jù)庫服務(wù)器組成, 數(shù)據(jù)可來自不同的服務(wù)器種。分布式數(shù)據(jù)庫可以將數(shù)據(jù)分放在不同的服務(wù)器上,這樣易于管理數(shù)據(jù),而且其存取效率也會比較高。(4)客戶機/服務(wù)器數(shù)據(jù)庫 隨著微機的發(fā)展,其運算速度越來越

22、快,而且價格低廉在利用網(wǎng)絡(luò)將終端機,一般為微機和數(shù)據(jù)庫服務(wù)器連接后就可以從數(shù)據(jù)庫服務(wù)器存取數(shù)據(jù),而且部分工作可以由終端機來完成,以分散數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān),這樣數(shù)據(jù)庫服務(wù)器就不必是價格昂貴的大型主機等,這就是客戶機/服務(wù)器數(shù)據(jù)庫網(wǎng)絡(luò)結(jié)構(gòu)。在客戶機/服務(wù)器數(shù)據(jù)庫的最簡單形式中,其數(shù)據(jù)庫的處理可分成兩個系統(tǒng):客戶機(client)和數(shù)據(jù)庫服務(wù)器(database server)前者運行數(shù)據(jù)庫應(yīng)用程序,后者運行全部或者部分?jǐn)?shù)據(jù)庫管理系統(tǒng)。在客戶機上的數(shù)據(jù)應(yīng)用程序,也稱為前端系統(tǒng)處理所有的屏幕和用戶輸入,輸出,在服務(wù)器上的后端系統(tǒng)處理和管理磁盤訪問。例如前端系統(tǒng)的一個用戶對數(shù)據(jù)庫中的數(shù)據(jù)發(fā)出請求(也稱為

23、查詢),前端應(yīng)用程序就將該請求通過網(wǎng)絡(luò)發(fā)送給服務(wù)器,數(shù)據(jù)庫服務(wù)器就進(jìn)行搜索,并將用戶查詢所需的數(shù)據(jù)返回到客戶機。結(jié)構(gòu)形式如圖2.1所示:圖2.1客戶機/服務(wù)器數(shù)據(jù)庫形式客戶機/服務(wù)器結(jié)構(gòu)的直接優(yōu)點是很明顯的,由于將處理工作分在兩個系統(tǒng)上進(jìn)行,在網(wǎng)絡(luò)上的流量將大大較少,可以加速數(shù)據(jù)的傳送 。由于數(shù)據(jù)必須存放在一個單獨的系統(tǒng)中, 對于大公司來說可能是一個問題,因為他們的數(shù)據(jù)庫用戶分散在很廣的地理區(qū)域內(nèi) 或者需要與其他部門或者中心主機共享部分的部門數(shù)據(jù)庫,這種情況就要求有一種方法能夠?qū)?shù)據(jù)分布在各個主機上,但是客戶機/服務(wù)器結(jié)構(gòu)下的網(wǎng)絡(luò)流量比較小,因而可以使得公司的局域網(wǎng)能輕松的訪問遠(yuǎn)方的任何服務(wù)器

24、。2.1.5 sql server 2000概述microsoft sql server 2000( 簡稱 sql server)由一系列相互協(xié)作的組件構(gòu)成,能滿足最大的 web 站點和企業(yè)數(shù)據(jù)處理系統(tǒng)存儲和分析數(shù)據(jù)的需要. sql server 提供了在服務(wù)器系統(tǒng)上運行的服務(wù)器軟件和在客戶端運行的客戶端軟件, 連接客戶和服務(wù)器計算機的網(wǎng)絡(luò)軟件則由 windows nt/2000 系統(tǒng)提供. sql server 的數(shù)據(jù)庫系統(tǒng)的服務(wù)器運行在 windows nt/2000 系統(tǒng)上,負(fù)責(zé)創(chuàng)建和維護(hù)表和索引等數(shù)據(jù)庫對象 確保數(shù)據(jù)完整性和安全性, 能夠在出現(xiàn)各種錯誤時恢復(fù)數(shù)據(jù). 客戶端應(yīng)用程序,可以

25、運行在 windows 9x/nt/2000 系統(tǒng)上完成所有的用戶交互操作, 將數(shù)據(jù)從服務(wù)器檢索出來后, 可以生成拷貝以便在本地保留, 也可以進(jìn)行操作. 提示: 客戶/服務(wù)器 c/s 數(shù)據(jù)庫計算是一種分布式的數(shù)據(jù)存儲, 訪問和處理技術(shù), 在它已經(jīng)稱為大多數(shù)企業(yè)計算的標(biāo)準(zhǔn) microsoft sql server 是客戶/服務(wù)器系統(tǒng)應(yīng)用的完美例子.sql server的客戶/服務(wù)器提供了許多傳統(tǒng)主機數(shù)據(jù)庫所沒有的先進(jìn)功能.數(shù)據(jù)訪問并非局限于某些已有的主機數(shù)據(jù)庫應(yīng)用程序. sql server 的一個主要優(yōu)點就是與主流客戶/服務(wù)器開發(fā)工具和桌面應(yīng)用程序的緊密集成,可以使用許多方法訪問sql ser

26、ver 數(shù)據(jù)庫, 例如 ,可以在visual basic, visual c+, access, powerbuilder, delphi 和 visual foxpro 中訪問 sql server 數(shù)據(jù)庫. 在進(jìn)行數(shù)據(jù)庫應(yīng)用程序開發(fā)時,可以使用數(shù)據(jù)訪問對象 (ado), 遠(yuǎn)程數(shù)據(jù)對象(rdo),activex 控件,ole db, odbc ,db-library和其它第三方提供的開發(fā)工具訪問sql server 數(shù)據(jù)庫. sql server 的客戶端應(yīng)用程序可以通過sql server 提供的應(yīng)用程序接口來訪問服務(wù)器端的數(shù)據(jù).有4個主要的訪問方法:odbc, api ole db, t

27、ransact-sql 和 db-library .對于客戶機,可以將這些 api 作為動態(tài)連接庫來使用,并且通過客戶端的網(wǎng)絡(luò)庫與 sql server 服務(wù)器通信.2.1.6安裝sql server 2000的系統(tǒng)要求 在安裝 sql server 2000 以前,必須配置適當(dāng)?shù)挠布蛙浖?,并保證它們正常運行,應(yīng)該在安裝 sql server 2000 之前檢查硬件和軟件的安裝情況,這可以避免很多安裝過程中發(fā)生的問題。(1)硬件要求:計算機:intel系列或兼容機,pentium 166m hz或更高內(nèi)存(ram):企業(yè)版:至少64mb,推薦128mb或更多 標(biāo)準(zhǔn)版:至少64mb 個人版:w

28、indows 2000/xp上至少64mb,其他操作系統(tǒng)上至少32mb硬盤空間: sql server 數(shù)據(jù)庫組件:95-270mb,一般為250mb analysis service:至少50mb,一般為130mb english query:80mb監(jiān)視器:vga或更高分辨率;sql 圖形工具要求800*600或更高分辨率定位設(shè)備:microsoft鼠標(biāo)或兼容設(shè)備cd-rom驅(qū)動器:需要 對于內(nèi)存大小,會由于操作系統(tǒng)的不同,可能需要額外的內(nèi)存,而實際的盤空間要求也會因系統(tǒng)配置和選擇安裝的應(yīng)用程序和功能的不同而異。注意: microsoft sql server 2000 沒有硬件兼容性列表

29、hcl,如果計算機滿足上表所列的最低要求,則對于能夠在windows 操作系統(tǒng)中使用的硬件,sql server 2000 軟件即可運行。(2)軟件要求sql server 2000 包括企業(yè)版,標(biāo)準(zhǔn)版,開發(fā)版和個人版每個版本對操作系統(tǒng)的要求都有所不同,每個版本及其組件安裝所需要的操作系統(tǒng)如下所示:企業(yè)版:microsoft windows nt server 4.0 ;microsoft windows nt server4.0 企業(yè)版; windows 2000 server; windows 2000 advanced server 和 windows 2000 data center

30、server 標(biāo)準(zhǔn)版:microsoft windows nt server 4.0 ;windows 2000 server; microsoft windows nt server 企業(yè)版;windows 2000 advanced server 和 windows 2000 data center server。 個人版:microsoft windows me; windows 98 windows nt workstation 4.0; windows 2000 professional ;microsoft windows nt server 4.0; windows 2000 s

31、erver 和所有更高級的 windows 操作系統(tǒng)。 注意: sql server 2000 的某些功能要求必須在 microsoft windows 2000 server(任何版本)下才可以使用。另外,在microsoft windows nt server 4.0 上 必須安裝 service pack5 sp5 或更高版本,這是 sql server 2000 所有版本的最低要求,而且 sql server 2000 中文版不支持英文版的 nt 4.0企業(yè)版, 如果在不帶網(wǎng)卡的 windows 98 計算機上安裝 sql server 2000 個人版,需要 windows 98 第

32、二版。2.1.7系統(tǒng)數(shù)據(jù)庫設(shè)計思想一個成功的管理系統(tǒng),是建立在許多條件之上的,而數(shù)據(jù)庫是其中一個非常重要的條件和關(guān)鍵技術(shù)。系統(tǒng)所涉及的數(shù)據(jù)庫設(shè)計分五個步驟:數(shù)據(jù)庫需求分析、概念設(shè)計、邏輯設(shè)計、物理設(shè)計與加載測試。(1) 數(shù)據(jù)庫需求分析的任務(wù)是將業(yè)務(wù)管理單證流化為數(shù)據(jù)流,劃分主題之間的邊界,繪制出dfd圖,并完成相應(yīng)的數(shù)據(jù)字典。(2) 概念設(shè)計的任務(wù)是從dfd出發(fā),繪制出本主題的實體關(guān)系圖,并列出各個實體與關(guān)系的綱要表。(3) 邏輯設(shè)計的任務(wù)是從e-r圖與對應(yīng)的綱要表出發(fā),確定各個實體及關(guān)系的表名屬性。(4) 物理設(shè)計的任務(wù)是確定所有屬性的類型、寬度與取值

33、范圍,設(shè)計出基本表的主鍵,將所有的表名與字段名英文化(現(xiàn)在很多軟件能支持中文字段,如ms sql server,我就是用的中文字段名),實現(xiàn)物理建庫,完成數(shù)據(jù)庫物理設(shè)計字典。(5) 加載測試工作貫穿于程序測試工作的全過程,整個錄入、修改、查詢、處理工作均可視為對數(shù)據(jù)庫的加載測試工作。 要設(shè)計出一個好的信息管理系統(tǒng)數(shù)據(jù)庫,除滿足系統(tǒng)所要求的功能外,還必須遵守下列原則:.基本表的個數(shù)越少越好。.主鍵的個數(shù)越少越好。鍵是表間連接的工具,主鍵越少,表間的連接就越簡單。.字段的個數(shù)越少越好。.所有基本表的設(shè)計均應(yīng)盡量符合第三范式。2.1.8 sql編程設(shè)計sql 語言是應(yīng)用

34、于數(shù)據(jù)庫的語言,本身是不能獨立存在的是一種非過程性語言( non-procedural 語言),與一般的高級語言,例如 c pascal 是大不相同的。一般的高級語言在存取數(shù)據(jù)庫時,需要依照每一行程序的順序處理許多的動作 ,但是使用 sql 時 只需告訴數(shù)據(jù)庫需要什么數(shù)據(jù),怎么顯示就可以了, 具體的內(nèi)部操作則由數(shù)據(jù)庫系統(tǒng)來完成。例如在本系統(tǒng)中,要從tlcyglxt數(shù)據(jù)庫中的“菜譜費用信息表”中查找菜名為“一品鮑魚湯” 的菜,則可以使用簡單的幾行命令即可(實際上,該語句經(jīng)常寫為一行,這里只是為了說明,將其分成了3行)select *from 菜譜費用信息表where 菜名=一品鮑魚湯(1)sql

35、語言的分類 sql 語言按照用途可以分為如下3類:(ddl data definition language) 數(shù)據(jù)定義語言(dml data manipulation language)數(shù)據(jù)處理語言(dcl data control language)數(shù)據(jù)控制語言下面分別介紹這3類:數(shù)據(jù)定義語言在數(shù)據(jù)庫系統(tǒng)中,每一個數(shù)據(jù)庫,數(shù)據(jù)庫中的表,視圖和索引等都是對象,要建立一個對象 ,都可以通過 sql 語言來完成,類似于這一類定義數(shù)據(jù)庫對象的 sql 敘述即為 ddl 語言。例如數(shù)據(jù)庫和表的創(chuàng)建,用creat來創(chuàng)建。下面是ddl命令:create table,alter tab

36、le,drop table,create index,drop index數(shù)據(jù)處理語言sql語法中處理數(shù)據(jù)的敘述稱為 dml,例如使用 select查詢表中的內(nèi)容 或者使用 insert(插入)delete( 刪除)和 update(更新)一筆記錄等, 這些屬于dml。數(shù)據(jù)控制語言對單個的 sql 語句來說,不管執(zhí)行成功或者失敗,都不會影響到其他的 sql 語句。但是在某些情況下,可能需要一次處理好幾個 sql 語句,而且希望它們必須全部執(zhí)行成功。如果其中一個執(zhí)行失敗,則這一批 sql 語句都不要執(zhí)行,已經(jīng)執(zhí)行的應(yīng)該恢復(fù)到開始的狀態(tài)。舉個簡單的銀行轉(zhuǎn)賬的例子,假設(shè)

37、要從 a 賬戶中轉(zhuǎn) 10000元到 b 賬戶中,首先從 a 賬戶中扣除 10000 元 ,然后在 b 賬戶中加入 10000 元。 但是 ,如果從 a 賬戶中扣除 10000 元后 出現(xiàn)錯誤, 導(dǎo)致下一步在 b 賬戶中加入 10000 元的操作不能完成,則 a 賬戶白白被扣除了 10000 元。 因此, 應(yīng)保證這些操作要么一起完成, 要么都不要執(zhí)行。 這種方式在 sql 中稱作事務(wù)(transaction)。在 sql 中, 可以使用 dcl 將數(shù)個 sql 語句組合起來, 然后交給數(shù)據(jù)庫系統(tǒng)一并處理。(2)如何使用這些語言? 查詢數(shù)據(jù)數(shù)據(jù)庫存在的意義在于將數(shù)據(jù)組織在一起,以方便查詢。查詢的含

38、義就是用來描述從數(shù)據(jù)庫中獲取數(shù)據(jù)和操縱數(shù)據(jù)的過程。sql語言中最主要,最核心的部分是它的查詢功能。查詢語言用來對已經(jīng)存在于數(shù)據(jù)庫中的數(shù)據(jù),按照特定的組合,條件表達(dá)式或者一定次序進(jìn)行檢索,其基本格式由 select 子句from 子句和 where 子句組成的sql 查詢語句:select <列名表>from <表或視圖名>where <查詢限定條件>也就是說 select 指定了要查看的列,字段 from 指定這些數(shù)據(jù)來自那里,表或者視圖 where 則指定了要查詢那些行,記錄。完整的 select 語句的用法如下所示:select select_listi

39、nto new_talbefrom table_sourcewhere search_conditiongroup by group_by_expressionhaving search_conditionorder by order_expression asc | desc其中, 帶有方括號的子句均是可選子句, 大寫的單詞表示sql 的關(guān)鍵字, 而小寫的單詞或者單詞組合表示表(視圖)名稱或者給定條件.插入與刪除數(shù)據(jù)新增數(shù)據(jù)使用 insert 語句 其語法如下:insert into table_name column_listvalues (data_values)其中各項參數(shù)的含義如下:

40、table_name 要新增數(shù)據(jù)的表或者視圖名稱.column_list 要新增數(shù)據(jù)的字段名稱,若沒有指定字段列表 則指全部字段.data_values 新增記錄的字段值 ,必須和column_list 相對應(yīng),也就是說每一個字段必須對應(yīng)到一個字段值.如在表 authors 中插入一筆記錄,即新增一個作者,輸入 sql語句如下:insert authors(author_id,author_name) values(3,'張英魁')刪除數(shù)據(jù)要刪除數(shù)據(jù)可以使用 delete 語句,其語法如下:delete table_name where serach_condition其中ta

41、ble_name 是要刪除數(shù)據(jù)的表的名稱;search_condition 是用來查找要刪除數(shù)據(jù)的條件。例如, 刪除 book 表中windows 2000 professional 看圖速成 一書的記錄,可以輸入以下 sql 語句:delete bookwhere book_name='windows 2000 professional 看圖速成'如果要刪除表中所有的行則可以使用 truncate 語句,其語法格式如下:truncate table table_name下面的例子即為刪除 authors 表中的所有數(shù)據(jù):truncate table authors修改數(shù)據(jù)在數(shù)

42、據(jù)輸入過程中,可能會出現(xiàn)輸入錯誤,或者是因時間變化而需要更新數(shù)據(jù),這都需要修改數(shù)據(jù)??梢栽谄髽I(yè)管理器中一筆一筆的修改記錄,但是使用 sql 語言可能會更快捷。修改數(shù)據(jù)需要使用 update 語句,其語法如下:update table_name set columnwhere condition例如,將 authors 表中作者為 “王小明” 全部改為 “王曉明”。sql 語句如下:update authors set author_name='王曉明'where author_name='王小明'2.2 delphi 數(shù)據(jù)庫開發(fā)2.2.1 delphi 數(shù)據(jù)庫應(yīng)

43、用程序體系結(jié)構(gòu) 在單機版系統(tǒng)中,數(shù)據(jù)庫和應(yīng)用程序位于同臺微機上,我采用的是delphi兩層體系結(jié)構(gòu):在網(wǎng)絡(luò)版方案中,數(shù)據(jù)庫位于服務(wù)器上,而應(yīng)用程序位于遠(yuǎn)程客戶機上,采用h層體系結(jié)構(gòu)。以下就delphi數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)進(jìn)行簡單介紹,并對其中的兩層、多層體系結(jié)構(gòu)進(jìn)行詳細(xì)介紹。2.2.2delphi數(shù)據(jù)庫體系結(jié)構(gòu)簡述 delphi使用一種新的開放式數(shù)據(jù)庫體系結(jié)構(gòu)來創(chuàng)建數(shù)據(jù)庫應(yīng)用程序。甚至可以不使用bde,而采用另一種新的客戶機數(shù)據(jù)集組件來創(chuàng)建數(shù)據(jù)庫應(yīng)用程序。采用這種開放式體系結(jié)構(gòu);可以創(chuàng)建三種類型的數(shù)據(jù)庫應(yīng)用程序:(1)單層體系結(jié)構(gòu):這種結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序可以通過bde操作本地的parado

44、x和 dbase數(shù)據(jù)文件,它直接讀寫本地的平面數(shù)據(jù)文件。(2)雙層體系結(jié)構(gòu):這種結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序,是客戶機/服務(wù)器結(jié)構(gòu)中的客戶機應(yīng)用程序,它可以和本地的或遠(yuǎn)程的數(shù)據(jù)庫服務(wù)器交互。(3)多層體系結(jié)構(gòu):這種結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序是部分的客戶機服務(wù)器應(yīng)用程序,其中的客戶機程序提供用戶接口;并與一個應(yīng)用服務(wù)器(有時也稱遠(yuǎn)程數(shù)據(jù)代理)交互,而這個通常駐留在其它機器上的應(yīng)用服務(wù)器又和一個遠(yuǎn)程數(shù)據(jù)庫服務(wù)器交互。這三種結(jié)構(gòu)的數(shù)據(jù)庫應(yīng)用程序都使用delphi的開放式數(shù)據(jù)集的體系結(jié)構(gòu),delphi提供了幾種不同的方式來構(gòu)造數(shù)據(jù)庫應(yīng)用程序,既可以通過bde來連接數(shù)據(jù)庫,也可以通過其它數(shù)據(jù)庫引擎來連接數(shù)據(jù)庫,此外d

45、elphi提供一種直接和數(shù)據(jù)庫相連的方法,那就是通過clientdataset和數(shù)據(jù)庫相連。 下面分別介紹兩層和多層數(shù)據(jù)庫應(yīng)用體系結(jié)構(gòu),以及創(chuàng)建它們所應(yīng)用的組件2.2.3雙層數(shù)據(jù)庫應(yīng)用程序體系結(jié)構(gòu)在兩層數(shù)據(jù)庫應(yīng)用程序模型中,客戶機應(yīng)用程序為數(shù)據(jù)提供一個應(yīng)用界面,通過bde直接與本地或遠(yuǎn)程的數(shù)據(jù)庫服務(wù)器交互。 這種模型中,所有的delphi應(yīng)用程序都是數(shù)據(jù)庫的客戶??蛻艨梢韵驍?shù)據(jù)庫服務(wù)器請求信息或者發(fā)送信息。一個服務(wù)器能夠同時處理許多請求,并協(xié)調(diào)數(shù)據(jù)的訪問和更新。2.2.4多層數(shù)據(jù)庫應(yīng)用程序的結(jié)構(gòu) 在多層結(jié)構(gòu)的數(shù)據(jù)庫模型中,一個應(yīng)用程序被分成幾個部分,駐留在不同的機器上??蛻魴C應(yīng)用程序為數(shù)據(jù)提供

46、一個用戶界面,它通過一個應(yīng)用程序服務(wù)器來傳遞數(shù)據(jù)請求。應(yīng)用程序服務(wù)器會直接與一個遠(yuǎn)程數(shù)據(jù)庫服務(wù)器通信。在這種模型中,客戶機應(yīng)用程序、應(yīng)用服務(wù)器和遠(yuǎn)程數(shù)據(jù)庫服務(wù)器可以分布在不同的機器上。如圖2.2所示:圖2.2多層結(jié)構(gòu)的數(shù)據(jù)庫模型 使用delphi可以創(chuàng)建客戶機程序和應(yīng)用程序服務(wù)器。一個客戶機程序使用標(biāo)準(zhǔn)的數(shù)據(jù)庫控制組件,并通過一個數(shù)據(jù)源連接了一個或多個客戶機數(shù)據(jù)集組件。每一個客戶機數(shù)據(jù)集通過 iprovider 接口(它是應(yīng)用程序服務(wù)器的遠(yuǎn)程數(shù)據(jù)模塊的一部分)與應(yīng)用程序服務(wù)器通信。iprovider接口是一個activex雙重接口,它是當(dāng)一個客戶機第一次使用tremt6server組件建立與應(yīng)

47、用程序服務(wù)器的初始連接時,由應(yīng)用程序服務(wù)器創(chuàng)建的。 應(yīng)用程序服務(wù)器創(chuàng)建iprovider接口有兩種方法:一種是應(yīng)用程序服務(wù)器包括一個或多個 iprovider對象,這些對象可以用來創(chuàng)建接口;另一種情況時沒有iprovider對象,delphi可以自動創(chuàng)建iprovider接口。一般來說,使用iprovider組件可以對接口有更多的控制。在任何一種情況下,客戶機程序和應(yīng)用程序服務(wù)器都是通過這個接口傳遞數(shù)據(jù)的。這個接口從數(shù)據(jù)集組件收集數(shù)據(jù),并把更新信息送回給它。這些組件是通過bde與數(shù)據(jù)庫服務(wù)器通信的??偠灾?,在多層結(jié)構(gòu)中,有多個與應(yīng)用程序服務(wù)器通信的客戶機程序。應(yīng)用程序服務(wù)器,為所有客戶機程序

48、提供了訪問數(shù)據(jù)庫的網(wǎng)關(guān),這樣我們就集中控制了對數(shù)據(jù)庫的訪問。2.2.5 delphi數(shù)據(jù)庫組件(1)用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)組件。(2)ado組件  delphi6.0包含了可以用來訪問microsoft公司的activex&

49、#160;data objects(ado)格式數(shù)據(jù)庫的組件。ado是microsoft公司關(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ù)過程中的細(xì)節(jié)

50、。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/oledb。ado組件的使用使得delphi在訪問數(shù)據(jù)的類型和采用的技術(shù)方面都有了很大的突破。2.2.6 sql語言在delphi中的應(yīng)用在delphi中使用sql語言非常方便,一般來說,都是通過tquery或tadoquery組件來使用sql語言的??梢栽趖query 或tadoquery組件的sql屬性中

51、設(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

52、0; 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ù)賦值。將tadoquery組件的datasource屬性設(shè)置為另一個數(shù)據(jù)源,這樣將另一個數(shù)據(jù)源中與當(dāng)前tadoquery組件的sql語句中的參數(shù)名相

53、匹配的字段值賦給其對應(yīng)的參數(shù)。利用這種方法也能實現(xiàn)所謂的連接查詢,創(chuàng)建主要明細(xì)型數(shù)據(jù)庫應(yīng)用。 在使用動態(tài)sql語句編程時,常常用到一個很重要的方法prepare,調(diào)用prepare 方法之后,delphi會將帶參數(shù)的sql語句傳送給與其對應(yīng)的數(shù)據(jù)庫引擎,對動態(tài)sql語句進(jìn)行語法分析和優(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方法,每

54、次在執(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)備下

55、一個查詢。一般來說,在一個應(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è)置t

56、query或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)

57、');datamodule4.adoquery2.parameters0.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命令語

58、句后面, 在程序運行時常常會出現(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程序,如

溫馨提示

  • 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

提交評論