版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、江 西 理 工 大 學(xué) 南 昌 校 區(qū)畢 業(yè) 設(shè) 計(jì)(論文)題 目:圖書管理系統(tǒng)的設(shè)計(jì)與開發(fā)查詢功能的實(shí)現(xiàn)系 :信息工程系專 業(yè):應(yīng)用電子技術(shù)班 級(jí):08應(yīng)用電子技術(shù)班學(xué) 生:張岑學(xué) 號(hào):08325149指導(dǎo)教師: 董玉婷老師 職稱:講師摘 要圖書管理系統(tǒng)是智能辦公系統(tǒng)(ioa)的重要組成部分,因此,圖書管理系統(tǒng)也以方便、快捷的有點(diǎn)正慢慢地進(jìn)入人們的生活,將傳統(tǒng)的圖書管理方式徹底的解脫出來,提高效率,減輕工作人員以往繁忙的工作,減小出錯(cuò)的概率,使讀者花更多的時(shí)間在選擇書和看書上。從而使人們有更多的時(shí)間來獲取信息、了解信息、掌握信息。圖書館管理系統(tǒng)是典型的信息管理系統(tǒng)(mis),其開發(fā)主要包括后
2、臺(tái)數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫。而對(duì)于后者則要求應(yīng)用程序功能完備、易使用等特點(diǎn)。采用sql數(shù)據(jù)庫作為后臺(tái)數(shù)據(jù)庫、sql編程語言作為前臺(tái)開發(fā)工具,通過對(duì)數(shù)據(jù)庫技術(shù)進(jìn)行了較深入的學(xué)習(xí)和應(yīng)用,主要完成圖書管理系統(tǒng)查詢功能的實(shí)現(xiàn)。系統(tǒng)運(yùn)行結(jié)果證明,本文所設(shè)計(jì)的圖書管理系統(tǒng)查詢功能的實(shí)現(xiàn)可以滿足學(xué)生和教師借閱者、圖書管理人員兩方面的需求,達(dá)到了設(shè)計(jì)要求。關(guān)鍵詞:圖書管理系統(tǒng);數(shù)據(jù)庫;查詢功能;sqlabstract library management system is the intelligent office syst
3、ems (ioa) an important part of, so a bit of library management system to quickly and easily is slowly into peoples lives, will be completely free of traditional library management, increase efficiency, reduce staff before the busy work, reducing the probability of error, so that readers spend more t
4、ime on in the choice of books and reading. so as to allow more time for people to get information, learn about information, information. library management system is a typical management information system(mis),the establishment and maintenance of database development includes the background and dev
5、elopment the two aspects of front-end applications. data consistency and integrity requirements established for the former library of strong, good data security. while the latter requires that the application functions, easy to use and so on. sqldatabase as a backend database,sql programming languag
6、es as the foreground development tools, through a more in-depth study and application of database technology, mainly implementation of query feature complete library management system. systems running turned out to this article the design of books management system realization of query functions can
7、 meet students and teachers, librarians two needs of the borrowing, meet design requirements.key words: library management systems; databases; queries;sql目 錄 圖書管理系統(tǒng)是智能辦公系統(tǒng)(ioa)的重要組成部分,因此,圖書管理系統(tǒng)也以方便、快捷的有點(diǎn)正慢慢地進(jìn)入人們的生活,將傳統(tǒng)的圖書管理方式徹底的解脫出來,提高效率,減輕工作人員以往繁忙的工作,減小出錯(cuò)的概率,使讀者花更多的時(shí)間在選擇書和看書上。從而使人們有更多的時(shí)間來獲取信息、了解信息、
8、掌握信息。圖書館管理系統(tǒng)是典型的信息管理系統(tǒng)(mis),其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng)、數(shù)據(jù)安全性好的庫。采用sql數(shù)據(jù)庫作為后臺(tái)數(shù)據(jù)庫、sql編程語言作為前臺(tái)開發(fā)工具,通過對(duì)數(shù)據(jù)庫技術(shù)進(jìn)行了較深入的學(xué)習(xí)和應(yīng)用,主要完成圖書管理系統(tǒng)查詢功能的實(shí)現(xiàn)。系統(tǒng)運(yùn)行結(jié)果證明,本文所設(shè)計(jì)的圖書管理系統(tǒng)查詢功能的實(shí)現(xiàn)可以滿足學(xué)生和教師借閱者、圖書管理人員兩方面的需求,達(dá)到了設(shè)計(jì)要求。關(guān)鍵詞:圖書管理系統(tǒng);數(shù)據(jù)庫;查詢功能;sql第一章 前言1 1.1 概述1 1.2 圖書管理系統(tǒng)1 1.3 研究現(xiàn)狀2 1.4 個(gè)性化服務(wù)2第二章 數(shù)
9、據(jù)庫4 2.1 數(shù)據(jù)庫階段的特點(diǎn)4 2.2從文件系統(tǒng)發(fā)展到數(shù)據(jù)庫系統(tǒng)是信息處理領(lǐng)域的一個(gè)重大變化5 2.3數(shù)據(jù)庫模型5 2.4 數(shù)據(jù)庫體系結(jié)構(gòu)7 2.5 sql簡介7 2.6 ado數(shù)據(jù)訪問組件9 2.7數(shù)據(jù)控制類datacontrol10 2.8數(shù)據(jù)訪問類dataaccess10 2.9 sql語言在delphi中的應(yīng)用11 第三章 圖書管理系統(tǒng)分析13 3.1 背景概述13 3.2 需求分析14 3.3 可行性分析15 3.4 系統(tǒng)分析15 3.5開發(fā)環(huán)境16 3.6 功能需求16 3.7 性能需求17第四章 詳細(xì)設(shè)計(jì)18 4.1 程序流程圖18 4.2 程序接口描述19 4.3 數(shù)據(jù)庫的
10、設(shè)計(jì)20第五章 編碼實(shí)現(xiàn)22 5.1 程序編碼22第六章 測(cè)試分析報(bào)告26 61測(cè)試計(jì)劃和要點(diǎn)26 62 測(cè)試用例26 63 測(cè)試結(jié)果及結(jié)論27致謝29參考文獻(xiàn)30第一章 前 言1.1概述現(xiàn)在,科學(xué)技術(shù)的飛速發(fā)展把人類社會(huì)推向了一個(gè)嶄新的時(shí)代信息時(shí)代。這已是無可爭議的事實(shí);信息對(duì)社會(huì)經(jīng)濟(jì)發(fā)展的巨大推動(dòng)作用,使其與物質(zhì)能源一起并列為現(xiàn)代社會(huì)的三大支柱,這已在全社會(huì)達(dá)到共識(shí)。隨著對(duì)信息作為一種資源來管理的需求日益加強(qiáng),信息研究領(lǐng)域出現(xiàn)了一種新的管理思想和模式信息管理。由于信息是普遍存在的,人類信息管理活動(dòng)的范圍也是十分廣泛的,信息管理不僅是信息工作的一部分,而且已被認(rèn)為是現(xiàn)代管理的重要組成部分。
11、在信息化、知識(shí)化的現(xiàn)代社會(huì)里,浩如煙海的科技文獻(xiàn)信息和圖書資料是不可取的社會(huì)財(cái)富。計(jì)算機(jī)信息技術(shù)和internet的飛速發(fā)展與廣泛普及,給我們利用和開發(fā)文獻(xiàn)息和圖書資料賦予了高效率的手段。傳統(tǒng)的紙介質(zhì)發(fā)展到紙張、電子、磁記錄、光存儲(chǔ)等多種介質(zhì)的大量應(yīng)用;信息處理和傳輸?shù)姆绞接蓚鹘y(tǒng)的書信進(jìn)化到文字、聲音、圖像的網(wǎng)絡(luò)實(shí)時(shí)傳輸。由于網(wǎng)絡(luò)的應(yīng)用,圖書館之間相互聯(lián)機(jī),資源共享,讀者被極為豐富的資源所包圍。隨著時(shí)代的發(fā)展,傳統(tǒng)的基于局域網(wǎng)和純文本類型的文獻(xiàn)信息系統(tǒng)己經(jīng)不能滿足發(fā)展的要求,需要賦予圖書管理系統(tǒng)先進(jìn)的技術(shù)和手段以向多種數(shù)據(jù)媒體、資源跨地域分布的數(shù)字式圖書館發(fā)展,圖書管理朝著技術(shù)自動(dòng)化和服務(wù)手段
12、多元化方向發(fā)展。圖書管理信息系統(tǒng)的開發(fā)與應(yīng)用越來越顯迫切與重要,因此,開發(fā)這樣一套圖書管理軟件成為很有必要的事情。1.2圖書管理系統(tǒng)圖書館管理系統(tǒng)是典型的信息管理系統(tǒng)(mis),其開發(fā)主要包括后臺(tái)數(shù)據(jù)庫的建立和維護(hù)以及前端應(yīng)用程序的開發(fā)兩個(gè)方面。對(duì)于前者要求建立起數(shù)據(jù)一致性和完整性強(qiáng).數(shù)據(jù)安全性好的庫。而對(duì)于后者則要求應(yīng)用程序功能完備,易使用等特點(diǎn)。本文針對(duì)目前中小圖書管理實(shí)際,從系統(tǒng)的開發(fā)背景、需求分析、設(shè)計(jì)原則及開發(fā)過程等四個(gè)方面進(jìn)行了全面的闡述,采用visual basic6.0和sql sserver2000等軟件為開發(fā)工具,闡述了中小型圖書管理軟件中所應(yīng)具有的功能及其設(shè)計(jì)與實(shí)現(xiàn)。使用
13、計(jì)算機(jī)軟件對(duì)圖書進(jìn)行管理,是計(jì)算機(jī)應(yīng)用的一部分。以實(shí)現(xiàn)圖書檢索迅速、可靠性高、存儲(chǔ)量大、壽命長、成本低等特點(diǎn),能極大程度地提高圖書管理的效率,也是圖書管理信息化、正規(guī)化管理的必然趨勢(shì)。針對(duì)用戶對(duì)圖書資源進(jìn)行有效利用和管理的功能需求,用建模技術(shù)對(duì)圖書管理資源采用面向?qū)ο蟮拿枋龇绞剑诰唧w系統(tǒng)功能實(shí)現(xiàn)之前,建立起系統(tǒng)模型是很必要的,這里采用具有可視化、能夠柔性實(shí)現(xiàn)分析、設(shè)計(jì)和開發(fā)系統(tǒng)的統(tǒng)一建模語言實(shí)現(xiàn)系統(tǒng)模型構(gòu)建。當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效
14、率,而且大大的提高了其安全性。尤其對(duì)于復(fù)雜的信息管理,計(jì)算機(jī)能夠充分發(fā)揮它的優(yōu)越性。計(jì)算機(jī)進(jìn)行信息管理與信息管理系統(tǒng)的開發(fā)密切相關(guān),系統(tǒng)的開發(fā)是系統(tǒng)管理的前提。本系統(tǒng)就是為了管理好圖書館信息而設(shè)計(jì)的。 圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對(duì)信息管理的主要方式是基于文本、表格等紙介質(zhì)的手工處理,對(duì)于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對(duì)借書卡的人工檢查進(jìn)行,對(duì)借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理
15、工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。 數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。圖書館采取手工方式對(duì)圖書借閱情況進(jìn)行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時(shí)對(duì)它比較清楚,時(shí)間一長,如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費(fèi)時(shí)、費(fèi)力。如要對(duì)很長時(shí)間以前的圖書進(jìn)行更改就更加困難了。
16、 基于這此問題,我認(rèn)為有必要建立一個(gè)圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改圖書情況。1.3研究現(xiàn)狀進(jìn)入21實(shí)際以來,信息技術(shù)從根本上推動(dòng)了圖書館的快速發(fā)展,計(jì)算機(jī)和計(jì)算機(jī)管理系統(tǒng)已成為圖書館進(jìn)行圖書館管理的主要設(shè)備和系統(tǒng),國內(nèi)主要圖書館已經(jīng)呈現(xiàn)出網(wǎng)絡(luò)化、信息化、智能化、和社會(huì)化的特征。信息技術(shù)在改變?nèi)藗兩a(chǎn)、收集、組織、傳遞和使用知識(shí)信息的方式的同時(shí),也使信息服務(wù)的機(jī)制、結(jié)構(gòu)以及服務(wù)手段發(fā)生了巨大的變化。如何將一些先進(jìn)的信息技術(shù)運(yùn)用到圖書館的管理和服務(wù)中,用這些技術(shù)來改變圖書館的傳統(tǒng)管理模式,多方面
17、、多角度的滿足人們獲取知識(shí)是目前圖書館的工作重點(diǎn)。信息技術(shù)的發(fā)展和應(yīng)用不僅改變了圖書館的信息資源的結(jié)構(gòu)和獲取信息的方式,同時(shí)也促進(jìn)了圖書館傳統(tǒng)功能模式向開放式、網(wǎng)絡(luò)式的信息服務(wù)模式改變,由單一功能向多功能改變,也改變了其服務(wù)理念。國內(nèi)大部分圖書館由于管理人員不多且大多數(shù)都不是圖書館管理的專業(yè)人員、業(yè)務(wù)分工也不是很明確,復(fù)雜的管理軟件對(duì)于他們來說太龐大、復(fù)雜,所以應(yīng)用效果不是很好。這就需要開發(fā)出一套既操作簡便又功能強(qiáng)大的圖書館管理軟件來管理圖書館的相關(guān)信息。1.4個(gè)性化服務(wù)在網(wǎng)絡(luò)化時(shí)代,人們對(duì)信息的需求具有鮮明的個(gè)性特征,這是由于其知識(shí)背景、職業(yè)背景、環(huán)境背景等等的不同所形成的,人們帶著個(gè)性化的
18、需求利用圖書館,圖書館便需要提供個(gè)性化服務(wù)以迎合這種需求。所謂個(gè)性化信息服務(wù),是指能夠滿足用戶的個(gè)人信息需求的一種服務(wù),它根據(jù)用戶的特性提供具有針對(duì)性的信息內(nèi)容或系統(tǒng)功能,在某一特定的網(wǎng)上功能和服務(wù)方式中,設(shè)定網(wǎng)上信息的來源方式、表現(xiàn)形式、特定網(wǎng)上功能及其他網(wǎng)上服務(wù)方式等,主動(dòng)地向用戶提供其可能需要的信息服務(wù)。從其定義中我們可以看出,圖書館提供的個(gè)性化信息服務(wù)具有顯性含義:根據(jù)個(gè)性化的用戶提供個(gè)性化的信息,也即服務(wù)的針對(duì)性;同時(shí)它也具有隱性含義:并不停留在用戶所需要的直接信息上,而是同時(shí)提供相關(guān)信息,這些信息是用戶可能需要但其還沒有意識(shí)到的,可以說這是服務(wù)的拓展性。由于網(wǎng)絡(luò)的迅速發(fā)展,它必將成
19、為圖書館與用戶相互交流的有效渠道,用戶通過網(wǎng)絡(luò)向圖書館提交信息需求,圖書館員作為信息導(dǎo)航員通過網(wǎng)絡(luò)傳送用戶所需求的信息,在多次的信息交流過程中實(shí)現(xiàn)信息服務(wù)的個(gè)性化。傳統(tǒng)圖書館所提出的特色化服務(wù)主要依托于特色化實(shí)體館藏,而在網(wǎng)絡(luò)環(huán)境下,有限的館藏資源和無限的網(wǎng)絡(luò)資源共同構(gòu)成圖書館信息服務(wù)的基礎(chǔ),圖書館應(yīng)該深入加工自己的文獻(xiàn)資源,深入到知識(shí)單元內(nèi)部,借助于網(wǎng)上信息資源,建立自己的特色化數(shù)據(jù)庫。因而,當(dāng)今環(huán)境下的特色化服務(wù)主要是指特色化數(shù)據(jù)庫提供的信息服務(wù),特色數(shù)據(jù)庫由特色內(nèi)容和特色技術(shù)構(gòu)成:特色內(nèi)容是指根據(jù)館藏特點(diǎn),依據(jù)已有的館藏資源,開發(fā)出富有特色的內(nèi)容體系,這一內(nèi)容體系應(yīng)為你無我有,你有我優(yōu);
20、特色技術(shù)是指要有一定的規(guī)模,要有有效的檢索功能,要有多媒體信息,要有互動(dòng)界面,要能提供全文檢索。特色化數(shù)據(jù)庫是服務(wù)的內(nèi)容,它是吸引用戶最為關(guān)鍵的因素。除此之外,圖書館還要考慮為用戶提供特色化的服務(wù)形式,如記錄用戶的需求信息,為其提供專業(yè)或相關(guān)專業(yè)信息的主動(dòng)推送服務(wù);建立讀者庫,促進(jìn)讀者之間的溝通,以讀者服務(wù)讀者。圖書館提供具有時(shí)效性的信息服務(wù)才能避免科研工作的延遲、重復(fù),才能使讀者最大限度地利用所獲取的信息,充分發(fā)揮信息的潛在價(jià)值。第二章 數(shù)據(jù)庫2.1數(shù)據(jù)庫階段的特點(diǎn)2.1.1減少數(shù)據(jù)的重復(fù)(redundancy can be reduced) 當(dāng)在一個(gè)非數(shù)據(jù)庫系統(tǒng)當(dāng)中,每一個(gè)應(yīng)用程序都有屬于
21、他們自己的文件,由于無法有系統(tǒng)建立的數(shù)據(jù),因此常常會(huì)造成存儲(chǔ)數(shù)據(jù)的重復(fù)與浪費(fèi)。例如:在一家公司當(dāng)中,人事管理程序與工資管理程序或許都會(huì)使用到職員與部門的信息或文件,而我們可以運(yùn)用數(shù)據(jù)庫的方法,把這兩個(gè)文件整理起來,以減少多余的數(shù)據(jù),過度地占用存儲(chǔ)空間。2.1.2避免數(shù)據(jù)的不一致(inconsistency can avoid)本項(xiàng)的特色,可以說是延伸前項(xiàng)的一個(gè)特點(diǎn),要說明這樣的一個(gè)現(xiàn)象,我們可以從下面這個(gè)實(shí)例來看:若是在同一家公司當(dāng)中,職員甲在策劃部門工作,且職員甲的記錄同時(shí)被存放在數(shù)據(jù)庫的兩個(gè)地方,而數(shù)據(jù)庫管理系統(tǒng)卻沒有對(duì)這樣重要的情況加以控制,當(dāng)其中一條數(shù)據(jù)庫被修改時(shí),便會(huì)造成數(shù)據(jù)的不一致
22、,但是,對(duì)于一個(gè)健全的數(shù)據(jù)庫管理系統(tǒng)而言,將會(huì)對(duì)這樣的情況加以控制,但有時(shí)并不需要刻意消除這種情形,應(yīng)當(dāng)視該數(shù)據(jù)庫的需求與效率來決定。2.1.3數(shù)據(jù)共享(data shared)對(duì)于數(shù)據(jù)共享的意義,并不是只有針對(duì)數(shù)據(jù)庫設(shè)計(jì)的應(yīng)用程序,可以使用數(shù)據(jù)庫中的數(shù)據(jù),對(duì)于其他撰寫好的應(yīng)用程序,同樣可以對(duì)相同數(shù)據(jù)庫當(dāng)中的數(shù)據(jù)進(jìn)行處理,進(jìn)而達(dá)到數(shù)據(jù)共享的目的。2.1.4強(qiáng)化數(shù)據(jù)的標(biāo)準(zhǔn)化(standard can be enforced)由數(shù)據(jù)庫管理系統(tǒng),對(duì)數(shù)據(jù)做出統(tǒng)籌性的管理,對(duì)于數(shù)據(jù)的格式與一些存儲(chǔ)上的標(biāo)準(zhǔn)進(jìn)行控制,如此一來,對(duì)于不同的環(huán)境的數(shù)據(jù)交換(data interchange)上將有很大的幫助,也
23、能提高數(shù)據(jù)處理的效率。2.1.5實(shí)踐安全性的管理(security restriction can be applied)通過對(duì)數(shù)據(jù)庫完整的權(quán)限控制,數(shù)據(jù)庫管理者可以確認(rèn)所有可供用戶存取數(shù)據(jù)的合法途徑渠道,并且可以事先對(duì)一些較重要或關(guān)鍵性的數(shù)據(jù)進(jìn)行安全檢查,以確保數(shù)據(jù)存取時(shí),能夠?qū)⑷魏尾划?dāng)損毀的情形降至最低。2.1.6完整性的維護(hù)(integrity can be maintained) 所謂完整性的問題,就是要確認(rèn)某條數(shù)據(jù)在數(shù)據(jù)庫當(dāng)中,是正確無誤的。正如(2)所述,若是無法控制數(shù)據(jù)的不一致性,便會(huì)產(chǎn)生完整性不足的問題,所以,我們會(huì)發(fā)現(xiàn),當(dāng)數(shù)據(jù)重復(fù)性高的時(shí)候,數(shù)據(jù)不完整的情形也會(huì)增加,當(dāng)然,若
24、是數(shù)據(jù)庫的功能完整,將會(huì)大大地提高數(shù)據(jù)完整性,也會(huì)增加數(shù)據(jù)庫的維護(hù)能力與維護(hù)簡便性。2.1.7需求沖突會(huì)獲得平衡(conflicting requirements can be balance) 在一個(gè)較大型的企業(yè)當(dāng)中,用戶不同的需求,往往會(huì)造成系統(tǒng)或數(shù)據(jù)庫在設(shè)計(jì)上的困擾,但是一個(gè)合適的數(shù)據(jù)庫系統(tǒng),可以通過數(shù)據(jù)庫管理員的管理,將會(huì)有效地整理各方面的信息,對(duì)于一些較重要的應(yīng)用程序,可以適時(shí)地提供較快速的數(shù)據(jù)存取方法與格式,以平衡多個(gè)用戶在需求上的沖突。2.2從文件系統(tǒng)發(fā)展到數(shù)據(jù)庫系統(tǒng)是信息處理領(lǐng)域的一個(gè)重大變化在文件系統(tǒng)階段,人們關(guān)注的中心問題是系統(tǒng)功能的設(shè)計(jì),因而程序設(shè)計(jì)處于主導(dǎo)地位,數(shù)據(jù)只起
25、著服從程序需要的作用。在數(shù)據(jù)庫方式下,信息處理觀念已為新體系所取代,數(shù)據(jù)占據(jù)了中心位置。數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)成為信息系統(tǒng)首先關(guān)心的問題,而利用這些數(shù)據(jù)的應(yīng)用程序設(shè)計(jì)則退居到以既定的數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)的外圍地位。 目前世界上已有數(shù)百萬個(gè)數(shù)據(jù)庫系統(tǒng)在運(yùn)行,其應(yīng)用已經(jīng)深入到人類社會(huì)生活的各個(gè)領(lǐng)域,從企業(yè)管理、銀行業(yè)務(wù)、資源分配、經(jīng)濟(jì)預(yù)測(cè)一直到信息檢索、檔案管理、普查統(tǒng)計(jì)等。并在通信網(wǎng)絡(luò)基礎(chǔ)上,建立了許多國際性的聯(lián)機(jī)檢索系統(tǒng)。我國20世紀(jì)90年代初在全國范圍內(nèi)裝備了12個(gè)以數(shù)據(jù)庫技術(shù)為基礎(chǔ)的大型計(jì)算機(jī)系統(tǒng),這些系分布在郵電、計(jì)委、銀行、電力、鐵路、氣象、民航、情報(bào)、公安、軍事、航天和財(cái)稅等行業(yè)。 數(shù)據(jù)庫技術(shù)還在
26、不斷的發(fā)展,并且不斷地與其它計(jì)算機(jī)技術(shù)相互滲透。數(shù)據(jù)庫技術(shù)與網(wǎng)絡(luò)通信技術(shù)相結(jié)合,產(chǎn)生了分布式數(shù)據(jù)庫系統(tǒng)。數(shù)據(jù)庫技術(shù)與面向?qū)ο蠹夹g(shù)相結(jié)合,產(chǎn)生了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)。 在數(shù)據(jù)庫技術(shù)中有四個(gè)名詞,其概念應(yīng)該分清。 (1)數(shù)據(jù)庫(database,db):db是統(tǒng)一管理的相關(guān)數(shù)據(jù)的集合。db能為各種用戶共享,具有最小冗余度,數(shù)據(jù)間聯(lián)系密切,而又有較高的數(shù)據(jù)獨(dú)立性。 (2)數(shù)據(jù)庫管理系統(tǒng)(database management system dbms):dbms是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,為用戶或應(yīng)用程序提供訪問db的方法,包括db的建立、查詢、更新及各種數(shù)據(jù)控制。dbms總是基于某種數(shù)
27、據(jù)模型,可以分為層次型、網(wǎng)狀型、關(guān)系型和面向?qū)ο笮蚫bms。 (3)數(shù)據(jù)庫系統(tǒng)(database system dbs):dbs是實(shí)現(xiàn)有組織地、動(dòng)態(tài)地存儲(chǔ)大量關(guān)聯(lián)數(shù)據(jù),方便多用戶訪問的計(jì)算機(jī)軟件、硬件和數(shù)據(jù)資源組成的系統(tǒng),即采用了數(shù)據(jù)庫技術(shù)的計(jì)算機(jī)系統(tǒng)。 (4)數(shù)據(jù)庫技術(shù):這是一門研究數(shù)據(jù)庫的結(jié)構(gòu)、存儲(chǔ)、管理和使用的軟件學(xué)科。數(shù)據(jù)庫技術(shù)是操作系統(tǒng)的文件系統(tǒng)基礎(chǔ)上發(fā)展起來的。而dbms本身要在操作系統(tǒng)的支持下才能工作。數(shù)據(jù)庫不僅用到數(shù)據(jù)結(jié)構(gòu)的知識(shí),而且豐富了數(shù)據(jù)結(jié)構(gòu)的內(nèi)容。在關(guān)系數(shù)據(jù)庫中要用到集合論、數(shù)理邏輯的理論。因此,數(shù)據(jù)庫技術(shù)是一門綜合性較強(qiáng)的學(xué)科。2.3 數(shù)據(jù)庫模型從20世紀(jì)50年代中期
28、開始,計(jì)算機(jī)的應(yīng)用由科學(xué)研究部門逐步擴(kuò)展到企業(yè)、行政部門。至60年代,數(shù)據(jù)處理成為計(jì)算機(jī)的主要應(yīng)用。數(shù)據(jù)庫技術(shù)作為數(shù)據(jù)管理技術(shù),是計(jì)算機(jī)軟件領(lǐng)域的一個(gè)重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當(dāng)規(guī)模的理論體系和實(shí)用技術(shù)。模型是對(duì)現(xiàn)實(shí)世界的抽象。在數(shù)據(jù)庫技術(shù)中,我們用模型的概念描述數(shù)據(jù)庫的結(jié)構(gòu)與語義,對(duì)現(xiàn)實(shí)世界進(jìn)行抽象,表示實(shí)體類型及實(shí)體間聯(lián)系的模型稱為“數(shù)據(jù)模型” 。 目前廣泛作用的數(shù)據(jù)模型可分為兩種類型: 一種是獨(dú)立于計(jì)算機(jī)系統(tǒng)的模型,完全不涉及信息在系統(tǒng)中的表示,只是用來描述某個(gè)特定組織所關(guān)心的信息結(jié)構(gòu),這類模型稱為“概念數(shù)據(jù)模型” 。要領(lǐng)模型用于建立信息世界的數(shù)據(jù)模型,強(qiáng)調(diào)其語義表達(dá)功能,應(yīng)
29、該概念簡單、清晰,易于用戶理解,它是現(xiàn)實(shí)世界的第一層抽象,是用戶和數(shù)據(jù)庫設(shè)計(jì)人員之間進(jìn)行交流的工具。這一其中著名的模型是“實(shí)體聯(lián)系模型” 。 另一種數(shù)據(jù)模型是直接面向數(shù)據(jù)庫的邏輯結(jié)構(gòu),它是現(xiàn)實(shí)世界的第二層抽象。 這類模型涉及到計(jì)算機(jī)系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng),又稱為“結(jié)構(gòu)數(shù)據(jù)模型” 。例如,層次、網(wǎng)狀、關(guān)系、面向?qū)ο蟮饶P?。這類模型有嚴(yán)格的形式化定義,以便于在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)。 (1)層次模型。用樹型結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型。樹的結(jié)點(diǎn)是記錄類型,每個(gè)非根結(jié)點(diǎn)有且只有一個(gè)父結(jié)點(diǎn)。上一層記錄類型和下一層記錄類型間聯(lián)系是1n聯(lián)系。 層次模型的特點(diǎn)是記錄之間的聯(lián)系通過指針實(shí)現(xiàn),查詢效率較高。但
30、層次模型有兩個(gè)缺點(diǎn):一是只能表示1n聯(lián)系,雖然有多種輔助手段實(shí)現(xiàn)了mn聯(lián)系,但都較復(fù)雜,用戶不易掌握,二是由于樹型結(jié)構(gòu)層次順序的嚴(yán)格和復(fù)雜,引起數(shù)據(jù)的查詢和更新操作也很復(fù)雜,因此,編寫應(yīng)用程序也很復(fù)雜。 (2)網(wǎng)狀模型。用有向圖結(jié)構(gòu)表示實(shí)體類型及實(shí)體間聯(lián)系的數(shù)據(jù)模型。1969年dbtg報(bào)告提出的數(shù)據(jù)模型是網(wǎng)狀模型的主要代表。有向圖中的結(jié)點(diǎn)是記錄類型,有向邊表示從箭尾一端的記錄類型到箭頭一端的記錄類型間聯(lián)系是1n聯(lián)系。 網(wǎng)狀模型的特點(diǎn):記錄之間聯(lián)系通過指針實(shí)現(xiàn),mn聯(lián)系也容易實(shí)現(xiàn)(每個(gè)mn聯(lián)系可拆成兩個(gè)1n聯(lián)系),查詢效率較高。網(wǎng)狀模型的缺點(diǎn)是編寫應(yīng)用程序比較復(fù)雜,程序員必須熟悉數(shù)據(jù)庫的邏輯結(jié)構(gòu)
31、。由于層次系統(tǒng)和網(wǎng)狀系統(tǒng)的應(yīng)用程序編制比較復(fù)雜,因此,從20世紀(jì)80年代中期起,其市場(chǎng)已被關(guān)系系統(tǒng)所取代。但是使用這兩種模型建立起的許多數(shù)據(jù)庫仍然在正常運(yùn)轉(zhuǎn),只是在外層加了個(gè)關(guān)系數(shù)據(jù)庫語言的接口。網(wǎng)狀模型有許多成功的產(chǎn)品,20世紀(jì)70年代的產(chǎn)品大部分網(wǎng)狀系統(tǒng),例如,honeywell公司的ids/、hp公司的image/3000、burroughs公司的dms、umivac公司的dms1100、cullinet公司的idms、cimcom公司的total等 (3)關(guān)系模型。關(guān)系模型的主要是用二維表格結(jié)構(gòu)表達(dá)實(shí)體集,用外鍵表示實(shí)體間聯(lián)系。關(guān)系模型是由若干個(gè)關(guān)系模式組成的集合。關(guān)系模式相當(dāng)于前面提
32、到的記錄類型,它的實(shí)例稱為關(guān)系,每個(gè)關(guān)系實(shí)際上是一張二維表格。 關(guān)系模型和層次、網(wǎng)狀模型的最大判別是用關(guān)鍵碼而不是用指針導(dǎo)航數(shù)據(jù),表格簡單用戶易懂,編程時(shí)并不涉及存儲(chǔ)結(jié)構(gòu),訪問技術(shù)等細(xì)節(jié)。關(guān)系模型是數(shù)學(xué)化模型。sql語言是關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)化語言,已得到了廣泛的應(yīng)用。20世紀(jì)70年代對(duì)關(guān)系數(shù)據(jù)庫的研究主要集中在理論和實(shí)驗(yàn)系統(tǒng)的開發(fā)方面。80年代初才形成產(chǎn)品,但很快得到廣泛的應(yīng)用和普及,并最終取代了層次、網(wǎng)狀數(shù)據(jù)庫產(chǎn)品?,F(xiàn)在市場(chǎng)上典型的關(guān)系dbms產(chǎn)品有db2、oracle、sybase、informix和微機(jī)型產(chǎn)品foxpro、access等。 關(guān)系模型和網(wǎng)狀、層次模型的最大區(qū)別是:關(guān)系模型用表
33、格數(shù)據(jù)而不是通過指針鏈來表示和實(shí)現(xiàn)實(shí)體間聯(lián)系。關(guān)系模型的數(shù)據(jù)結(jié)構(gòu)簡單、易懂。只需用簡單的查詢語句就可對(duì)數(shù)據(jù)庫進(jìn)行操作。 關(guān)系模型是數(shù)學(xué)化的模型,可把表格看成一個(gè)集合,因此集合論、數(shù)理邏輯等知識(shí)可引入到關(guān)系模型中來。關(guān)系模型已是一個(gè)成熟的有前途的模型,已得到廣泛應(yīng)用。 (4)面向?qū)ο竽P?。目前,關(guān)系數(shù)據(jù)庫的使用已相當(dāng)普遍,但是,現(xiàn)實(shí)世界中仍然存在著許多含有復(fù)雜數(shù)據(jù)結(jié)構(gòu)的應(yīng)用領(lǐng)域,例如,cad數(shù)據(jù)、圖形數(shù)據(jù)等,而關(guān)系模型在這方面的處理能力就顯得力不從心。因此,人們需要更高級(jí)的數(shù)據(jù)庫技術(shù)來表達(dá)這類信息。面向?qū)ο蟮母拍钭钤绯霈F(xiàn)在程序設(shè)計(jì)語言中,隨后迅速滲透到計(jì)算機(jī)領(lǐng)域的每一個(gè)分支。面向?qū)ο髷?shù)據(jù)庫是面向
34、對(duì)象概念與數(shù)據(jù)庫技術(shù)相結(jié)合的產(chǎn)物。 面向?qū)ο竽P湍芡暾孛枋霈F(xiàn)實(shí)世界的數(shù)據(jù)結(jié)構(gòu),具有豐富的表達(dá)能力,但模型相對(duì)較復(fù)雜,涉及的知識(shí)面也廣,因此面向?qū)ο髷?shù)據(jù)庫尚未達(dá)到關(guān)系數(shù)據(jù)庫那樣的普及程度。2.4 數(shù)據(jù)庫體系結(jié)構(gòu)數(shù)據(jù)庫的體系結(jié)構(gòu)分三級(jí):內(nèi)部級(jí)(internal),概念級(jí)(conceptual)和外部級(jí)(external)。這個(gè)三級(jí)結(jié)構(gòu)有時(shí)也稱為“三級(jí)模式結(jié)構(gòu)”,或“數(shù)據(jù)抽象的三個(gè)級(jí)別”,最早是在1971年通過的dbtg報(bào)告中提出,后來收入在1975年的美國ansi/sparc報(bào)告中。雖然現(xiàn)在dbms的產(chǎn)品多種多樣,在不同的操作系統(tǒng)支持下工作,但是大多數(shù)系統(tǒng)在總的體系結(jié)構(gòu)上都具有三級(jí)模式的結(jié)構(gòu)特征
35、。從某個(gè)角度看到的數(shù)據(jù)特性稱為“數(shù)據(jù)視圖”(data view)。 外部級(jí)最接近用戶,是單個(gè)用戶所能看到的數(shù)據(jù)特性。單個(gè)用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。 概念級(jí)涉及到所有用戶的數(shù)據(jù)定義,是全局的數(shù)據(jù)視圖。全局?jǐn)?shù)據(jù)視圖的描述稱為“概念模式”。 內(nèi)部級(jí)最接近于物理存儲(chǔ)設(shè)備,涉及到實(shí)際數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)。物理存儲(chǔ)數(shù)據(jù)視圖的描述稱為“內(nèi)模式”。 數(shù)據(jù)庫的三級(jí)模式結(jié)構(gòu)是數(shù)據(jù)的三個(gè)抽象級(jí)別。它把數(shù)據(jù)的具體組織留給dbms去做,用戶只要抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ),這樣就減輕了用戶使用系統(tǒng)的負(fù)擔(dān)。 三級(jí)結(jié)構(gòu)之間往往差別很大,為了實(shí)現(xiàn)這三個(gè)抽象級(jí)別的聯(lián)系和轉(zhuǎn)換,dbms在三級(jí)結(jié)構(gòu)之
36、間提供兩個(gè)層次的映象(mappings):外模式/模式映象,模式/內(nèi)模式映象。此處模式是概念模式的簡稱。2.5 sql簡介2.5.1 sql用戶對(duì)數(shù)據(jù)庫的使用,是通過數(shù)據(jù)庫管理系統(tǒng)提供的語言來實(shí)現(xiàn)的。不同的數(shù)據(jù)庫管理系統(tǒng)提供不同的數(shù)據(jù)庫語言。關(guān)系數(shù)據(jù)庫管理系統(tǒng)幾乎都提供關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言sql。 sql 的全稱是structured query language,即結(jié)構(gòu)化查詢語言。sql語句可以從關(guān)系數(shù)據(jù)庫中獲得數(shù)據(jù),也可以建立數(shù)據(jù)庫、增加數(shù)據(jù)、修改數(shù)據(jù)。1986年ansi采用sql語言作為關(guān)系數(shù)據(jù)庫系統(tǒng)的標(biāo)準(zhǔn)語言,后被國際化標(biāo)準(zhǔn)組織(iso)采納為國際標(biāo)準(zhǔn)。sql語言使用方便、功能豐富、簡潔
37、易學(xué),是操作數(shù)據(jù)庫的工業(yè)標(biāo)準(zhǔn)語言,得到廣泛地應(yīng)用。例如關(guān)系數(shù)據(jù)庫產(chǎn)品db2、oracle等都實(shí)現(xiàn)了sql語言。同時(shí),其它數(shù)據(jù)庫產(chǎn)品廠家也紛紛推出各自的支持sql的軟件或者與sql的接口軟件。這樣sql語言很快被整個(gè)計(jì)算機(jī)界認(rèn)可。 sql語言是一種非過程化語言,它一次處理一個(gè)記錄集合,對(duì)數(shù)據(jù)提供自動(dòng)導(dǎo)航。sql語言允許用戶在高層的數(shù)據(jù)結(jié)構(gòu)上工作,而不對(duì)單個(gè)記錄進(jìn)行操作。sql語言不要求用戶指定數(shù)據(jù)的存取方法,而是使用查詢優(yōu)化器,由系統(tǒng)決定對(duì)指定數(shù)據(jù)存取的最快速手段。當(dāng)設(shè)計(jì)者在關(guān)系表上定義了索引時(shí),系統(tǒng)會(huì)自動(dòng)利用索引進(jìn)行快速檢索,用戶不需知道表上是否有索引或者有什么類型的索引等細(xì)節(jié)。 sql語言可
38、以完成許多功能,例如: 查詢數(shù)據(jù) 在數(shù)據(jù)庫表格中插入、修改和刪除記錄 建立、修改和刪除數(shù)據(jù)對(duì)象 控制對(duì)數(shù)據(jù)和數(shù)據(jù)對(duì)象的存取 確保數(shù)據(jù)庫的一致性和完整性等2.5.2sql查詢 數(shù)據(jù)查詢是關(guān)系運(yùn)算理論在sql語言中的主要體現(xiàn),select 語句是sql查詢的基本語句,當(dāng)我們?cè)趯?duì)一個(gè)數(shù)據(jù)庫進(jìn)各種各樣的操作時(shí),使用的最多的就是數(shù)據(jù)查詢,在以sql為基礎(chǔ)的關(guān)系數(shù)據(jù)庫中,使用的最多的就是select查詢語句。 select語句的完整句法如下: select 目標(biāo)表的列名或列表達(dá)式序列 from 基本表和(或)視圖序列 where 行條件表達(dá)式 group by 列名序列 having 組條件表達(dá)式 ord
39、er by列名 ascdeac 我在select語句中還使用了大量的保留字和通配符以進(jìn)行各種各樣的條件查詢。在系統(tǒng)中有大量的查詢按鈕,其使用了大量的查詢語句,而且這些查詢語句大部分使用的是模糊查詢,所以大量的使用了模式匹配符like(判斷值是否與指定的字符通配格式相符)。在包含like的查詢語句中可以使用兩個(gè)通配符:%(百分號(hào)):與零個(gè)或多個(gè)字符組成的字符串匹配;_(下劃線):與單個(gè)字符匹配。系統(tǒng)中的條件判斷往往包含多個(gè)條件,這時(shí)就需要使用邏輯運(yùn)算符not、and、or(用于多條件的邏輯連接),謂詞all以及保留字distinct等等。做為select語句還有很多的使用方法,這里就不再敘述。2
40、.5.3 sql數(shù)據(jù)更新 使用數(shù)據(jù)庫的目的是為了有效地管理數(shù)據(jù),而數(shù)據(jù)的插入、刪除和修改則是必不可少的一個(gè)功能。在本系統(tǒng)中就大量地使用了數(shù)據(jù)插入、刪除和修改這三種操作,現(xiàn)做一個(gè)簡單地介紹。 數(shù)據(jù)插入 往數(shù)據(jù)庫的基本表中插入數(shù)據(jù)使用的是insert語句,其方式有兩種:一種是元組值的插入,另一種是查詢結(jié)果的插入。在本系統(tǒng)中使用的是前一種方式,其句法如下:insert into 基本表名(列表名)values(元組值) 數(shù)據(jù)刪除 往數(shù)據(jù)庫的基本表中刪除數(shù)據(jù)使用的是delete語句,其句法如下: delete from 基本表名 where 條件表達(dá)式 在些作一點(diǎn)說明,刪除語句實(shí)際上是“select
41、* from 基本表名 where 條件表達(dá)式”和delete操作的結(jié)合,每找到一個(gè)元組,就把它刪除。此外,delete語句只能從一個(gè)基本表中刪除元組,where子句中條件可以嵌套,也可以是來自幾個(gè)基本表的復(fù)合條件。 數(shù)據(jù)修改 當(dāng)需要修改基本表中元組的某些列值時(shí),可以用update語句實(shí)現(xiàn),其句法如下: update基本表名 set列名=值表達(dá)式,列名=值表達(dá)式 where條件表達(dá)式 在delphi中使用sql語句是很方便的,一般來說,都是通過tquery組件來使用sql語言的。有一點(diǎn)要進(jìn)行說明,雖然通過tquery組件來使用sql語言很方便,但考慮到自己對(duì)不同組件的理解程度、個(gè)人習(xí)慣以及其它
42、各個(gè)方面,在本系統(tǒng)中我采用的是ado組件來對(duì)數(shù)據(jù)庫進(jìn)行操作。最簡單的方法比如在tadoquery組件的sql屬性中就可以鍵入sql語句,至于詳細(xì)的使用方法在后面進(jìn)行介紹。2.6 ado數(shù)據(jù)訪問組件ado數(shù)據(jù)對(duì)象(active data objects)實(shí)際是一種提供訪問各種數(shù)據(jù)類型的鏈接機(jī)制。ado設(shè)計(jì)為一種極簡單的格式,通過odbc的方法同數(shù)據(jù)庫接口中,可以使用任何一種odbc數(shù)據(jù)源,即不止適合于sql server、oracle、access等數(shù)據(jù)庫應(yīng)用程序,也適合于excel表格、文本文件、圖形文件和無格式的數(shù)據(jù)文件。ado是基于ole-db之上的技術(shù),因此ado通過其內(nèi)部的屬性和方法提
43、供統(tǒng)一的數(shù)據(jù)訪問接口方法。ado使您的客戶端應(yīng)用程序能夠通過ole db提供訪問和操作在數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。ado支持用于建立c/s和web的應(yīng)用程序的主要功能。其主要優(yōu)點(diǎn)是易于使用、高速度、低內(nèi)存支出和占用磁盤空間較少。ado同時(shí)具有遠(yuǎn)程數(shù)據(jù)服務(wù)(rds)功能,通過rds可以在一次往返過程中實(shí)現(xiàn)將數(shù)據(jù)從服務(wù)器移動(dòng)到客戶端應(yīng)用程序和web頁、在客戶端對(duì)數(shù)據(jù)進(jìn)行處然后將更新結(jié)果返回服務(wù)器的操作。 delphi 6.0繼續(xù)對(duì)microsoft的ado訪問能力的支持。這種能力是通過一組新組件實(shí)現(xiàn)的,這些組件是在企業(yè)版的ado組件頁中,在組件面版的ado頁上可以找到這些組件。利用在前面章節(jié)提到的td
44、ataset抽象類,ado組件可以不通過bde而直接實(shí)現(xiàn)ado連接。這意味著只需要很少的代碼就可以實(shí)現(xiàn)該連接并且性能得到提高。 利用ado數(shù)據(jù)訪問組件,可以只使用ado結(jié)構(gòu)與數(shù)據(jù)庫取得聯(lián)系并對(duì)其中的數(shù)據(jù)進(jìn)行操作,而在這些過程中完全不需要使用bde。大多數(shù)的ado連接和數(shù)據(jù)集組件都是與基于bde的連接和數(shù)據(jù)集組件相類似的。tadoconnection組件與基于bde的應(yīng)用程序中的tdatabase組件類似。tadotable與ttable,tadoquery與tquery,以及tadostoreproc和tstoredproc之間都具有這種類似的對(duì)應(yīng)關(guān)系。使用這些ado組件的方式與我們常使用的數(shù)
45、據(jù)訪問組件(基于bde)都有許多相同之處。ttadodataset沒有直接的bde對(duì)應(yīng)組件,但它提供了許多與ttable和tquery相同的功能。同樣,tadocommand也沒有相對(duì)應(yīng)的bde組件,它是在delphi/ado環(huán)境中完成特定功能的組件。delphi 6.0通過ado數(shù)據(jù)集訪問組件,可以不借助bde數(shù)據(jù)引擎而是通過微軟的oledb來訪問更為廣泛的數(shù)據(jù)庫中的數(shù)據(jù)。ado數(shù)據(jù)集訪問組件與常用的數(shù)據(jù)訪問組件是并列的關(guān)系。 在系統(tǒng)中我主要使用的是adotablet和adoquery兩個(gè)組件。2.7 數(shù)據(jù)控制類datacontrol數(shù)據(jù)控制類負(fù)責(zé)數(shù)據(jù)庫數(shù)據(jù)的顯示,并把用戶對(duì)數(shù)據(jù)的修改傳回。
46、這里的絕大多數(shù)組件,如dbtext, dbedit, dbmemo, dbimage, dblistbox, dbcombobox, dbcheckbox, dbradiogroup, dblookuplistbox, dblookupcombox, dbctrgrid的功能和對(duì)應(yīng)的非數(shù)據(jù)感知組件相同,如tedit框,tradiogroups單選按鈕組等,只不過在顯示數(shù)據(jù)庫數(shù)據(jù)時(shí)要用而已。在系統(tǒng)中主要使用數(shù)據(jù)網(wǎng)格控件dbgrid和數(shù)據(jù)庫導(dǎo)航器控件dbnavigator。2.8 數(shù)據(jù)訪問類dataaccess數(shù)據(jù)庫應(yīng)用系統(tǒng)中數(shù)據(jù)訪問是一個(gè)首要問題,包括單用戶和 c/s系統(tǒng),都必須聯(lián)系一些數(shù)據(jù)庫和
47、數(shù)據(jù)表文件。delphi 6 提供了專門用于數(shù)據(jù)訪問的基類控件。主要包括數(shù)據(jù)源控件datasource、客戶數(shù)據(jù)集控件clientdataset、數(shù)據(jù)集提供器控件datasetprovider等等。 tdatabase:當(dāng)一個(gè)基于bde的數(shù)據(jù)庫應(yīng)用程序需要一個(gè)永久數(shù)據(jù)庫連接時(shí),需要定制向一個(gè)數(shù)據(jù)庫服務(wù)器的連接時(shí),需要事務(wù)控制和特殊的數(shù)據(jù)庫別名時(shí)就得用到tdatabase對(duì)象。特別是當(dāng)連接到一個(gè)遠(yuǎn)程的sql數(shù)據(jù)庫服務(wù)器時(shí),如果要利用bde進(jìn)行數(shù)據(jù)庫事務(wù)處理,那么,tdatabase對(duì)象的威力就體現(xiàn)出來了。在一個(gè)應(yīng)用程序中為每一個(gè)數(shù)據(jù)庫連接顯示的聲明tdatabase對(duì)象要根據(jù)需要而定,不是必需的
48、。對(duì)一個(gè)數(shù)據(jù)庫連接,如果沒有顯示的聲明并實(shí)例化tdatabase對(duì)象,系統(tǒng)就會(huì)產(chǎn)生一個(gè)帶有默認(rèn)屬性的tdatabase對(duì)象。 tdatasource對(duì)象用于在dataset對(duì)象(包括tquery,tstoredproc,ttable等)和數(shù)據(jù)感知組件之間提供一個(gè)連接的紐帶,以便在窗體上顯示數(shù)據(jù)庫中的數(shù)據(jù),在數(shù)據(jù)庫中導(dǎo)航定位與編輯數(shù)據(jù)集中的數(shù)據(jù)。如果一個(gè)dataset對(duì)象中的數(shù)據(jù)想在數(shù)據(jù)感知組件中顯示和修改,它就必須和tdatasource對(duì)象相聯(lián)系。同樣,一個(gè)數(shù)據(jù)感知組件如果想和數(shù)據(jù)源相聯(lián)系以便顯示和操縱數(shù)據(jù),就必須以tdatasource對(duì)象為中介。 用delphi6作數(shù)據(jù)庫應(yīng)用開發(fā)概括來說
49、如下:先利用數(shù)據(jù)存取組件和實(shí)際的數(shù)據(jù)庫建立連接,并用tsession對(duì)象和tdatabase對(duì)象管理這些連接。然后以tdatasource對(duì)象為中介,用數(shù)據(jù)感知組件向用戶顯示數(shù)據(jù)庫的內(nèi)容并接受用戶的查詢和修改等操作。2.9 sql語言在delphi中的應(yīng)用 在delphi中使用sql語言非常方便,一般來說,都是通過tquery組件來使用sql語言的??梢栽趖query組件的sql屬性中設(shè)置sql語句。設(shè)計(jì)程序時(shí),在該組件的屬性對(duì)話框中選擇sql屬性,單擊帶省略號(hào)的按鈕,就可以打開string list editor對(duì)話框,然后我們就可以在對(duì)話框中添加sql語句。還可以使用delphi的sql
50、builder來自動(dòng)生成sql語句,這樣可以避免手工編寫sql而可能造成的語法錯(cuò)誤。 靜態(tài)sql語句在程序設(shè)計(jì)時(shí)便已固定下來,它不包含任何參數(shù)和變量。動(dòng)態(tài)sql語句,也被稱作參數(shù)化的語句,在其中間包含著表示字段名或表名的參數(shù),例如下面的語句是一條動(dòng)態(tài)sql語句: select * from students where studentcode =: studentcode;其中的變量studentcode便是一個(gè)參數(shù)變量,它由一個(gè)冒號(hào)引導(dǎo),在程序運(yùn)行過程中,必須要為該參數(shù)賦值,該條sql語句才能正確執(zhí)行,每次運(yùn)行應(yīng)用程序時(shí)可以為該參數(shù)變量賦予不同的值。為參數(shù)賦值有三種方法:根據(jù)參數(shù)在sql語句
51、中出現(xiàn)的順序,設(shè)置tquery部件的params屬性值為參數(shù)賦值。直接根據(jù)sql語句中各參數(shù)的名字,調(diào)用parambyname方法來為各參數(shù)賦值。將tquery部件的datasource屬性設(shè)置為另一個(gè)數(shù)據(jù)源,這樣將另一個(gè)數(shù)據(jù)源中與當(dāng)前tquery部件的sql語句中的參數(shù)名相匹配的字段值賦給其對(duì)應(yīng)的參數(shù)。利用這種方法也能實(shí)現(xiàn)所謂的連接查詢,創(chuàng)建主要明細(xì)型數(shù)據(jù)庫應(yīng)用。在程序運(yùn)行過程中,要想設(shè)置tquery部件的sql屬性,必須首先調(diào)用close方法,關(guān)閉tquery部件,然后再調(diào)用clear方法清除sql屬性中現(xiàn)存的sql命令語句, 最后再調(diào)用add方法為sql屬性設(shè)置新的sql命令語句。例如:
52、query1.close 關(guān)閉query1)query1.sql.clear 清除sql屬性中的sql命令語句query1.sql.add(select * from students);query1.sql.add( where name =lucy );在為tquery部件設(shè)置sql屬性時(shí)調(diào)用close方法總是很安全的,如果tquery部件已經(jīng)被關(guān)閉了,調(diào)用close方法時(shí)不會(huì)產(chǎn)生任何影響。在應(yīng)用程序中為sql屬性設(shè)置新的sql 命令語句時(shí),必須要調(diào)用clear方法以清除sql屬性中現(xiàn)存的sql命令語句,如果不調(diào)用clear方法,便調(diào)用add方法向sql屬性中設(shè)置sql命令語句,那么新設(shè)置
53、的sql命令語句會(huì)追加在現(xiàn)存sql命令語句后面, 在程序運(yùn)行時(shí)常常會(huì)出現(xiàn)出乎意料的查詢結(jié)果甚至程序無法運(yùn)行下去。在這里要特別注意的,一般情況下tquery部件的sql屬性只能包含一條完整的sql語句,它不允許被設(shè)置成多條sql語句。當(dāng)然有些數(shù)據(jù)庫服務(wù)器也支持在tquery部件的sql屬性中設(shè)置多條sql語句,只要數(shù)據(jù)庫服務(wù)器允許這樣,我們?cè)诰幊虝r(shí)可以為 sql 屬性設(shè)置多條sql語句。在為tquery部件設(shè)置完sql屬性的屬性值之后,也即編寫好適當(dāng)?shù)膕ql程序之后,可以有多種方式來執(zhí)行sql程序。在設(shè)計(jì)過程中,設(shè)置完tquery部件的sql屬性之后將其active屬性的值置為true, 這樣便
54、可以執(zhí)行sql屬性中的sql程序,如果應(yīng)用中有與tquery部件相連的數(shù)據(jù)瀏覽部件( 如tddgrid tdbedit等)那么在這些數(shù)據(jù)瀏覽部件中會(huì)顯示sql程序的執(zhí)行結(jié)果。在應(yīng)用程序運(yùn)行過程中,通過程序調(diào)用tquery部件的open方法或execsql 方法可以執(zhí)行其sql屬性中的sql程序。open方法和execsql方法是不一樣的。open方法只能用來執(zhí)行sql語言的查詢語句(select命令), 并返回一個(gè)查詢結(jié)果集,而execsql方法還可以用來執(zhí)行其它常用的sql語句(如insert, update, delete等命令),例如:query1.open (這樣會(huì)返回一個(gè)查詢結(jié)果集)
55、如果調(diào)用open方法,而沒有查詢結(jié)果時(shí),會(huì)出錯(cuò)。此時(shí)應(yīng)該調(diào)用execsql 方法來代替open方法。如:query1.execsql (沒有返回結(jié)果)當(dāng)然在設(shè)計(jì)應(yīng)用程序時(shí),程序設(shè)計(jì)人員是無法確定tquery部件中的sql 語句是否會(huì)返回一個(gè)查詢結(jié)果的。對(duì)于這種情況應(yīng)當(dāng)用tryexcept模塊來設(shè)計(jì)程序。在 try 部分調(diào)用open方法,而在except部分調(diào)用excesql方法,這樣才能保證程序的正確運(yùn)行。delphi中用adoquery來使用sql語句同樣十分方便。在adoquery組件中首先通過connectionstring屬性值來聯(lián)接數(shù)據(jù)源,然后就通過雙擊sql屬性值來寫入sql語句。在delphi中調(diào)用數(shù)據(jù)庫,就可以調(diào)用adoquery組件,通過修改其中的sql屬性中的sql語句來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的各項(xiàng)操作。值得注意的是,adoquery組件只有在激活的情況
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 污泥委托處置合同范例
- 單位物業(yè)工程合同范例
- 服裝制版師習(xí)題
- 2025年聊城道路運(yùn)輸從業(yè)資格考試系統(tǒng)
- 售后返租合同范例
- 工程招商合同范例
- 商業(yè)演出合同范例
- 本地戶外租賃合同范例
- 電控箱加工合同范例
- 2025年七臺(tái)河貨運(yùn)從業(yè)資格證考試題庫答案
- 鐵路建設(shè)項(xiàng)目施工企業(yè)信用評(píng)價(jià)辦法(鐵總建設(shè)〔2018〕124號(hào))
- 模具報(bào)價(jià)表精簡模板
- 形式發(fā)票模板 PI模板 英文版
- 初一的最美的風(fēng)景高分的作文600字
- 高考英語單項(xiàng)選擇題題庫題
- 檢驗(yàn)檢測(cè)機(jī)構(gòu)資質(zhì)認(rèn)定現(xiàn)場(chǎng)評(píng)審日程表及簽到表
- 完整版高低壓開關(guān)柜投標(biāo)文件技術(shù)標(biāo)
- 蘭州市行政區(qū)劃代碼表
- 管鮑之交-歷史劇劇本(共4頁)
- [交流][jtag]跟我學(xué)jtag協(xié)議破解——第一彈初識(shí)jtagtap狀態(tài)機(jī)
- 尼康FM2說明書25頁
評(píng)論
0/150
提交評(píng)論