畢業(yè)設(shè)計(jì)---公司辦公信息管理系統(tǒng)_第1頁
已閱讀1頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘  要</b></p><p>  隨著計(jì)算機(jī)科學(xué)的發(fā)展,數(shù)據(jù)庫技術(shù)在Internet和Intranet中的應(yīng)用越來越廣泛,為廣大網(wǎng)絡(luò)用戶提供了更加周到和人性化的服務(wù)。本文描述了如何使用JSP技術(shù)來組建企業(yè)內(nèi)部信息管理網(wǎng)站。實(shí)現(xiàn)了:員工信息的發(fā)布與共享,本文中的員工信息管理系統(tǒng)主要是實(shí)現(xiàn)員工資料的錄入、信息的查詢、記錄和管理。作為人事管理系統(tǒng)和企業(yè)內(nèi)網(wǎng)的一部分

2、,企業(yè)員工信息管理系統(tǒng)可以便于企業(yè)領(lǐng)導(dǎo)掌握人員的動向,及時調(diào)整人才的分配;企業(yè)內(nèi)部財(cái)務(wù)信息的發(fā)布與共享,本文中的企業(yè)內(nèi)部財(cái)務(wù)信息查詢管理系統(tǒng)通過對企業(yè)進(jìn)出流水帳后臺數(shù)據(jù)庫的管理,實(shí)現(xiàn)了企業(yè)內(nèi)部各種財(cái)務(wù)信息的管理,并可以生成各種類型的報(bào)表,便于管理層決策;員工之間的信息交流,本文中的內(nèi)部信息交流系統(tǒng)可以實(shí)現(xiàn)企業(yè)內(nèi)部通知的發(fā)布、各種具體問題的意見發(fā)布并獲得相應(yīng)的反饋。本文首先闡述了基于JSP平臺的辦公信息管理系統(tǒng)管理信息系統(tǒng)的開發(fā)背景以及其

3、實(shí)踐意義,其次說明了辦公信息管理系統(tǒng)管理信息系統(tǒng)的功能以及相比同類系統(tǒng)的創(chuàng)新之處。然后就辦公信息管理系統(tǒng)管理系統(tǒng)開發(fā)中所使用的一些的技術(shù)進(jìn)行研究探討。主要針對數(shù)據(jù)庫的設(shè)計(jì)技術(shù)、存儲過程技術(shù)、J2EE技術(shù)以及用SQL Server JS</p><p>  關(guān)鍵詞: 數(shù)據(jù)庫;JSP;J2EE;存儲過程;SQL Server 數(shù)據(jù)提供程序</p><p><b>  ABSTRACT

4、</b></p><p>  This paper expatiate the Management Information System of Library using J2EE, its background and the significance it has when application. Then, it presents the function of the Management

5、 Information System of Library and also discuss some technologies using when develop this system. Especially, it discuss the design technology of database, Stored Procedure, J2EE and control SQL Server 2000 using SQL Ser

6、ver JSP Data Provider . In the end, it details the setup introduction and the user’s guide fo</p><p>  Keywords: Database;; J2EE; Stored Procedure; SQL Server JSP Data Provider </p><p><b>

7、  目 錄</b></p><p>  1 系統(tǒng)開發(fā)背景以及主要內(nèi)容闡述</p><p>  隨著當(dāng)今社會的迅猛發(fā)展,知識變的越來越重要,終身學(xué)習(xí)的觀念已經(jīng)深入人心。而辦公信息管理系統(tǒng)――這一傳統(tǒng)的獲取知識的場所,它的地位也變的越來越重要。而辦公信息管理系統(tǒng)的管理方法也更新了很多次。從最初的手工管理到現(xiàn)在的計(jì)算機(jī)管理等等。</p><p>  筆者

8、經(jīng)過調(diào)查一些辦公信息管理系統(tǒng)的現(xiàn)狀,發(fā)現(xiàn)各辦公信息管理系統(tǒng)使用的管理系統(tǒng)基本都是幾年前的產(chǎn)品,大多使用jsp方式,web平臺也主要使用jsp或php開發(fā)。而且以前的VB面向?qū)ο蠡幊蹋∣OP)支持的不是很好,系統(tǒng)維護(hù)起來也相當(dāng)困難。</p><p>  MicrosoftJ2EE技術(shù)的推出,將計(jì)算帶入一個新時代。現(xiàn)在J2EE已經(jīng)引起業(yè)界廣泛的關(guān)注。J2EE是專門為程序員設(shè)計(jì)的、功能強(qiáng)大的開發(fā)工具,利用該工具能夠構(gòu)

9、建各類應(yīng)用程序。J2EE可以說是博大精深,蘊(yùn)含者豐富的新技術(shù)新思想。</p><p>  J2EE使應(yīng)用程序的功能更強(qiáng)大,使系統(tǒng)開發(fā)更簡單,使系統(tǒng)的部署更輕松。而J2EE包含的統(tǒng)一的類庫,統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)使得各類編程模型更統(tǒng)一。</p><p>  筆者個人對J2EE技術(shù)非常感興趣,在這方面也做過大量的研究。又鑒于當(dāng)前流行的辦公信息管理系統(tǒng)管理信息系統(tǒng)技術(shù)都比較陳舊,就萌發(fā)了用J2EE開發(fā)一

10、個新辦公信息管理系統(tǒng)管理信息系統(tǒng)的想法。</p><p>  很高興它成為為我畢業(yè)設(shè)計(jì)研究的課題。</p><p>  系統(tǒng)的實(shí)踐意義有兩個:1開發(fā)出的系統(tǒng)功能強(qiáng)大,可以應(yīng)用于各大中型辦公信息管理系統(tǒng)使用,可以根據(jù)數(shù)據(jù)的要求添加功能。2由于J2EE推出的時間不算很長,所以網(wǎng)上很少有用J2EE開發(fā)的公開源代碼的大型系統(tǒng)。本系統(tǒng)可以給廣大的J2EE編程愛好者一些參考。</p>

11、<p>  本文理論部分主要針對數(shù)據(jù)庫設(shè)計(jì)技術(shù)、存儲過程技術(shù)、J2EE技術(shù)以及用SQL Server JSP 數(shù)據(jù)提供程序訪問SQLserver2000數(shù)據(jù)庫技術(shù)這四個方面進(jìn)行了研究和探討。</p><p>  辦公信息管理系統(tǒng)管理信息系統(tǒng)的每一行代碼都是精雕細(xì)琢出來的,從里面體現(xiàn)出J2EE的強(qiáng)大性以及優(yōu)越性。筆者在編程過程中查閱了大量的籍,參考了大量MSDN以及各大網(wǎng)站的技術(shù)文章,全部代碼約有一萬兩千

12、行左右。筆者為此做了大量的工作。</p><p>  在系統(tǒng)的開發(fā)過程中,筆者深刻體會到了J2EE平臺的強(qiáng)大性以及優(yōu)越性以及存儲過程在提高數(shù)據(jù)訪問性能和增強(qiáng)數(shù)據(jù)訪問安全性上所起到的重要作用。</p><p><b>  系統(tǒng)概述</b></p><p>  辦公信息管理系統(tǒng)管理系統(tǒng)基于Microsoft公司最新的JSP平臺構(gòu)建,編碼的基本語言是

13、JSP。開發(fā)過程中統(tǒng)一使用J2EE框架的數(shù)據(jù)類型、方法,拋棄了原來vb6的內(nèi)容。充分體現(xiàn)了J2EE的優(yōu)越性,使系統(tǒng)易安裝部署、易維護(hù)。</p><p>  系統(tǒng)使用J2EE+SQLserver2000模式,數(shù)據(jù)層基本都基于存儲過程構(gòu)建,使得速度更快、安全性更高。</p><p>  2.1系統(tǒng)提供的功能:</p><p>  本設(shè)計(jì)的學(xué)習(xí)目的旨在通過對公司辦公管理系

14、統(tǒng)(B/S結(jié)構(gòu))的需求分析、任務(wù)概述、前臺設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)、模塊實(shí)現(xiàn)的介紹,使得讀者能夠?qū)τ肑ava/JSP開發(fā)B/S結(jié)構(gòu)的實(shí)用系統(tǒng)有一個清楚的認(rèn)識和理解。同時讓讀者能夠在閱讀和自行動手實(shí)現(xiàn)的過程中,進(jìn)一步理解如何由實(shí)際功能需求轉(zhuǎn)化為具體Java編程,并讓讀者熟悉和掌握J(rèn)SP / Servlet編程和Java數(shù)據(jù)庫編程。本設(shè)計(jì)的學(xué)習(xí)重點(diǎn)是如何將企業(yè)內(nèi)部辦公管理中的實(shí)際問題提煉為功能需求,如何將功能需求轉(zhuǎn)化為具體的B/S結(jié)構(gòu)的模塊設(shè)計(jì)和數(shù)

15、據(jù)庫設(shè)計(jì),以及如何將系統(tǒng)設(shè)計(jì)轉(zhuǎn)換為規(guī)范文檔描述和標(biāo)準(zhǔn)Java代碼實(shí)現(xiàn)。</p><p><b>  設(shè)計(jì)簡介:</b></p><p>  本系統(tǒng)為公司辦公信息管理系統(tǒng),主要用來管理公司的員工信息和財(cái)務(wù)信息,并提供公司內(nèi)部信息交流平臺。該系統(tǒng)主要由以下四個部分組成:</p><p>  系統(tǒng)用戶身份驗(yàn)證子系統(tǒng):對用戶所輸入的用戶名和密碼進(jìn)行匹配

16、,并限制用戶登錄錯誤的次數(shù),同時記錄用戶的登錄狀態(tài),以便在用戶瀏覽系統(tǒng)的其他頁面時,進(jìn)行登錄狀態(tài)的確認(rèn)。</p><p>  公司員工信息管理子系統(tǒng):除了對員工信息的查詢外,還可以具體細(xì)化為用戶修改個人信息頁面,系統(tǒng)管理員頁面,添加新用戶頁面和修改某個用戶信息頁面。</p><p>  公司財(cái)務(wù)信息管理子系統(tǒng):可以具體細(xì)化為添加新財(cái)務(wù)信息記錄頁面,添加新財(cái)務(wù)項(xiàng)目頁面,生成各種財(cái)務(wù)報(bào)表頁面和

17、修改某個財(cái)務(wù)記錄頁面。</p><p>  公司內(nèi)部信息交流子系統(tǒng):可以具體細(xì)化為通知公告牌頁面,發(fā)布新通知頁面,修改某個通知頁面,意見箱頁面,意見分析頁面,投票站頁面和投票分析頁面。</p><p>  針對數(shù)據(jù)設(shè)計(jì)的部分:</p><p>  由于數(shù)據(jù)的多元性和位置不確定性,該部分采取基于B/S的方式實(shí)現(xiàn)。代碼使用JSP編寫,利用JSP的優(yōu)點(diǎn),可以自動適應(yīng)多種數(shù)

18、據(jù)瀏覽器。截圖如下:</p><p>  數(shù)據(jù)只需要有一臺聯(lián)網(wǎng)的計(jì)算機(jī)和一個常用WEB瀏覽器。就可以輕松的進(jìn)行辦公信息管理系統(tǒng)查詢、更改個人信息、向辦公信息管理系統(tǒng)反饋信息等。該部分主要提供以下功能:</p><p>  登陸驗(yàn)證。(防止數(shù)據(jù)信息被盜用。)</p><p>  辦公信息管理系統(tǒng)查詢。(一個綜合的辦公信息管理系統(tǒng)查詢系統(tǒng),可以方便的使數(shù)據(jù)查到需要的籍。

19、)</p><p>  數(shù)據(jù)個人信息查詢以及管理。(可以適當(dāng)?shù)母囊恍?shù)據(jù)個人的資料,如email等,此外在這里還可以查到數(shù)據(jù)當(dāng)前的、所有的記錄等。)</p><p>  信息服務(wù)。(定期公布超期的數(shù)據(jù)列表,以及新到的辦公信息管理系統(tǒng)等信息。)</p><p>  2.2系統(tǒng)創(chuàng)新部分以及一些特點(diǎn)</p><p>  1)首先本系統(tǒng)是基于J2E

20、E平臺構(gòu)建的,這是以前從未有過的。</p><p>  2)系統(tǒng)很好的解決了一個關(guān)于時間沖突的問題。</p><p>  時間沖突問題闡述如下:</p><p>  辦公信息管理系統(tǒng)管理信息系統(tǒng)是一個網(wǎng)絡(luò)版的系統(tǒng),其運(yùn)作方式是有一臺主數(shù)據(jù)服務(wù)器、還有若干個負(fù)責(zé)各項(xiàng)功能的數(shù)據(jù)端。舉個例子:辦公信息管理系統(tǒng)可能有若干臺數(shù)據(jù)端電腦用于管理、還可能有若干臺用于管理、還可能有

21、若干臺用于辦公信息管理系統(tǒng)、數(shù)據(jù)信息維護(hù)等。因?yàn)槊颗_電腦的系統(tǒng)時間可能會發(fā)生改變,這就會造成數(shù)據(jù)錯誤。比如張某于2月10日在負(fù)責(zé)的A號電腦上借了一本,可能A的系統(tǒng)時間被誤設(shè)定為2月5日。如果張某的最大時間為一個月,則他應(yīng)該的時間就被誤設(shè)定為3月5日。</p><p>  筆者在開發(fā)過程中也參考了一些相關(guān)的辦公信息管理系統(tǒng)系統(tǒng),發(fā)現(xiàn)有的系統(tǒng)根本沒有注意到這個問題。有的是在系統(tǒng)數(shù)據(jù)端設(shè)定一個時間校準(zhǔn)的提示或者干脆就手

22、工輸入時間。這樣無疑給操作人員增加了負(fù)擔(dān),而且校準(zhǔn)還不一定正確。</p><p>  在本系統(tǒng)中,所有的時間都是基于服務(wù)器時間的。即系統(tǒng)中必要的與時間有關(guān)的操作。都采用標(biāo)準(zhǔn)的T-SQL函數(shù)GETDATE()從數(shù)據(jù)服務(wù)器返回時間。這就避免了功能上的錯誤,也避免了給操作人員帶來的不必要負(fù)擔(dān)。</p><p>  3)用J2EE的開放式并發(fā)進(jìn)行并發(fā)控制</p><p> 

23、 在辦公信息管理系統(tǒng)系統(tǒng)的使用過程中,可能同時有多臺數(shù)據(jù)機(jī)在操作同一個數(shù)據(jù)行。比如負(fù)責(zé)修改辦公信息管理系統(tǒng)信息的A號電腦正在修改編號為XXX的籍,而編號為B的電腦正試圖刪除編號為XXX的籍。這樣做肯定會有一些沖突,這就要討論并發(fā)控制。</p><p>  當(dāng)多個用戶試圖同時修改數(shù)據(jù)時,需要建立控制機(jī)制來防止一個用戶的修改對同時操作的其他用戶所作的修改產(chǎn)生不利的影響。處理這種情況的系統(tǒng)叫做“并發(fā)控制”。</p

24、><p>  在以前的編程模型中,大多使用保守式并發(fā)控制,即在從獲取記錄直到記錄在數(shù)據(jù)庫中更新的這段時間內(nèi),該行對用戶不可用。J2EE的數(shù)據(jù)集DataSet是一個斷開式的模型,不適合保守式并發(fā)。在我所編寫的辦公信息管理系統(tǒng)管理信息系統(tǒng)中,使用了開放式并發(fā)控制(參見附錄中我翻譯的英文文章),即只有當(dāng)實(shí)際更新數(shù)據(jù)時,該行才對其他用戶不可用。更新將在數(shù)據(jù)庫中檢查該行并確定是否進(jìn)行了任何更改。如果試圖更新已更改的記錄,則將導(dǎo)

25、致并發(fā)沖突。</p><p>  4)全部數(shù)據(jù)層都基于存儲過程構(gòu)建</p><p>  使用存儲過程,可以減少網(wǎng)絡(luò)流量,提高程序的速度以及安全性。具體內(nèi)容請參見筆者文章里對存儲過程的研究討論。</p><p>  系統(tǒng)設(shè)計(jì)過程及原理闡述</p><p>  管理信息系統(tǒng)(以下簡稱MIS)服務(wù)于現(xiàn)代化的企事業(yè)管理,是提供企事業(yè)工作效率和經(jīng)濟(jì)效益

26、的計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)。</p><p>  管理信息系統(tǒng)涉及的因素非常多、非常復(fù)雜,開發(fā)起來具有一定的難度。如果掌握了一套行之有效的開發(fā)方法,以及把握好MIS開發(fā)中的重點(diǎn),開發(fā)中就可以大量的解約人力、財(cái)力等。</p><p>  我個人經(jīng)過大量的研究、實(shí)踐。認(rèn)為在MIS開發(fā)中,首先數(shù)據(jù)庫技術(shù)是MIS開發(fā)中的重要技術(shù)。數(shù)據(jù)庫開發(fā)成敗直接影響到整個MIS的開發(fā)。所以,構(gòu)架一個優(yōu)秀的MIS一定要有好

27、的數(shù)據(jù)庫設(shè)計(jì)。本文討論的重點(diǎn)就是數(shù)據(jù)庫設(shè)計(jì)理論。主要是兩方面,一是基本的數(shù)據(jù)庫理論;二是J2EE平臺上的J2EE數(shù)據(jù)訪問技術(shù)。</p><p>  其次,在MIS開發(fā)過程中,所使用的開發(fā)工具和應(yīng)開發(fā)應(yīng)用程序的種類也很重要。這里就不能不提到Microsoft公司的JSP平臺。JSP 是一種新的計(jì)算平臺,它簡化了在高度分布式 Internet 環(huán)境中的應(yīng)用程序開發(fā)。它提供一個一致的面向?qū)ο蟮木幊汰h(huán)境、提供一個將系統(tǒng)部

28、署和版本控制沖突最小化的代碼執(zhí)行環(huán)境等等非常優(yōu)秀的特點(diǎn)。在以后介紹開發(fā)過程中將簡單闡述。</p><p>  再次,界面的設(shè)計(jì)也是MIS的一個重點(diǎn)。界面一定要具有易學(xué)性及易使用性。在當(dāng)今流行的程序設(shè)計(jì)中,設(shè)計(jì)包含用戶界面的應(yīng)用程序時有兩種選擇:Windows 窗體和 Web 窗體。兩者在開發(fā)環(huán)境中都具有完全的設(shè)計(jì)時支持,并且可以提供豐富的用戶界面和高級應(yīng)用程序功能以解決業(yè)務(wù)問題。要根據(jù)應(yīng)用程序的具體功能來選擇到底

29、開發(fā)何種應(yīng)用程序。我所開發(fā)的這個辦公信息管理系統(tǒng)管理信息系統(tǒng)是這兩者的結(jié)合。在管理功能方面,我使用了傳統(tǒng)的WinForms技術(shù)。而在數(shù)據(jù)使用方面的功能模塊,是用webForms開發(fā)的。</p><p><b>  3.1 數(shù)據(jù)庫設(shè)計(jì)</b></p><p>  數(shù)據(jù)庫技術(shù)是20世紀(jì)60年代后期產(chǎn)生何發(fā)展起來的一項(xiàng)計(jì)算機(jī)數(shù)據(jù)管理技術(shù),現(xiàn)廣泛運(yùn)用與各種信息處理以及科學(xué)研究

30、上。數(shù)據(jù)庫技術(shù)已經(jīng)成為當(dāng)今時代非常重要的技術(shù)。</p><p>  當(dāng)今流行的數(shù)據(jù)庫系統(tǒng)主要是以關(guān)系數(shù)據(jù)庫為代表的第二代數(shù)據(jù)庫系統(tǒng)。</p><p>  當(dāng)今流行的大型數(shù)據(jù)庫管理系統(tǒng)主要有SQL Server、Oracle、Sybase等。</p><p>  辦公信息管理系統(tǒng)管理信息系統(tǒng)選用的是SQLserver2000數(shù)據(jù)庫管理系統(tǒng)。</p>&l

31、t;p>  選擇它的原因有:SQLserver2000功能強(qiáng)大,能完整實(shí)現(xiàn)數(shù)據(jù)庫系統(tǒng)的所有功能。再者,我們選用的系統(tǒng)開發(fā)平臺是微軟公司的JSP平臺,它很好的支持了其公司的數(shù)據(jù)庫產(chǎn)品SQLserver2000,而且為了加快數(shù)據(jù)處理速度,JSP平臺中還專門有一個SQL Server數(shù)據(jù)提供程序(System.Data.SqlClient)。</p><p>  辦公信息管理系統(tǒng)管理信息系統(tǒng)使用SQLserver

32、2000數(shù)據(jù)庫管理系統(tǒng),最后設(shè)計(jì)的數(shù)據(jù)庫表如下:</p><p>  數(shù)據(jù)庫名稱lib2004</p><p><b>  數(shù)據(jù)表有:</b></p><p><b>  數(shù)據(jù)庫表關(guān)系如下:</b></p><p><b>  圖3-1</b></p><p

33、>  以下我們討論數(shù)據(jù)庫設(shè)計(jì)方法時均以辦公信息管理系統(tǒng)管理信息系統(tǒng)數(shù)據(jù)庫(lib2004)為例.</p><p>  3.1.1數(shù)據(jù)庫設(shè)計(jì)重點(diǎn)</p><p><b>  (1) 數(shù)據(jù)規(guī)范化</b></p><p><b>  (2) 數(shù)據(jù)完整性</b></p><p>  (3) 數(shù)據(jù)庫的保

34、護(hù)</p><p>  3.1.2規(guī)范化設(shè)計(jì)</p><p>  良好的數(shù)據(jù)規(guī)范可以減少數(shù)據(jù)冗余和一些插入異常和刪除異常。使關(guān)系模式盡量滿足3NF。規(guī)范化設(shè)計(jì)的內(nèi)容比較多,在這里就不一一闡述。請?jiān)敿?xì)體會lib2004數(shù)據(jù)庫中每個表的構(gòu)建。如在這方面想有進(jìn)一步研究的化,請參閱一些數(shù)據(jù)庫原理與技術(shù)方面的籍。</p><p>  3.1.3數(shù)據(jù)庫完整性設(shè)計(jì)</p

35、><p>  數(shù)據(jù)庫完整性共分三類</p><p>  (1) 實(shí)體完整性規(guī)則</p><p>  實(shí)體完整性規(guī)則是指主關(guān)鍵字的任何部分不能為空值</p><p>  比如在辦公信息管理系統(tǒng)表(book)中</p><p>  條碼號(Book_code)是主關(guān)鍵字,其值就不能夠?yàn)榭铡?lt;/p><p&

36、gt;  主關(guān)鍵字不一定由一個字段組成,可以是多個字段的組合。</p><p>  (2)引用完整性,又稱參照完整性,主要是描述存在關(guān)系間引用時,不能引用不存在的元組. </p><p><b>  圖3-2</b></p><p>  比如在辦公信息管理系統(tǒng)分類表(booksort)與辦公信息管理系統(tǒng)表(book)之間的關(guān)系(如圖3-2),這

37、是一個典型的一對多關(guān)系。關(guān)系的主鍵方是booksort表中的Book_sort(辦公信息管理系統(tǒng)類別)字段,關(guān)系的外鍵方是book表中的Book_code(辦公信息管理系統(tǒng)類別)字段。</p><p>  其引用完整性就是book表中的每一本的辦公信息管理系統(tǒng)類別Book_sort或者為空值,或等于辦公信息管理系統(tǒng)分類表(booksort)中某行的Book_sort值。</p><p> 

38、 通俗的說法就是辦公信息管理系統(tǒng)不能屬于一個沒有定義的類別。</p><p>  (3)用戶自定義完整性</p><p>  這是一種比較有針對性的完整性,由具體環(huán)境決定。例如:在數(shù)據(jù)表(au)中,數(shù)據(jù)的性別字段(Au_sex)的值必須為‘男’或‘女’。這就是一條用戶自定義完整性規(guī)則。</p><p>  這類完整性在SQLserver2000中的實(shí)現(xiàn)就是對相關(guān)表建

39、一個check約束即可。比如在au表中建立一個CK_au約束,其約束表達(dá)式為([Au_sex] = '男' or [Au_sex] = '女'),就實(shí)現(xiàn)了值必須為‘男’或‘女’的用戶自定義完整規(guī)則。</p><p>  3.1.4數(shù)據(jù)庫的保護(hù)</p><p>  數(shù)據(jù)庫的保護(hù)主要內(nèi)容是數(shù)據(jù)庫的備份恢復(fù)、數(shù)據(jù)的事務(wù)性、以及如何進(jìn)行并發(fā)控制。其中備份和恢復(fù)容易理

40、解,這里主要闡述其它兩項(xiàng)。</p><p>  事務(wù)是一組操作序列.但是從用戶的角度看來,事務(wù)是一個不可分割的操作序列。事務(wù)中的操作要么都做,要么都不做.事務(wù)不應(yīng)該丟失,不應(yīng)該被分割完成。</p><p>  舉個例子,從某個銀行帳戶向另一個帳戶轉(zhuǎn)入資金。這個過程分兩步,首先將資金從一個帳戶扣除,然后轉(zhuǎn)入另一帳戶。這個過程中,如果資金扣除以后由于一些因素導(dǎo)致失敗。則資金就從一個帳戶上扣除但

41、沒有轉(zhuǎn)到另一個帳戶上,就導(dǎo)致了兩個用戶都失去了這筆資金。如果將這兩步組成一個事務(wù),充分利用事務(wù)的共進(jìn)共退性就可以避免這一點(diǎn)。</p><p>  SQLserver2000事務(wù)語句主要包括BEGIN TRANSACTION(開始一個事務(wù)),COMMIT TRANSACTION(提交事務(wù)),ROLLBACK TRANSACTION(回滾事務(wù))。</p><p>  數(shù)據(jù)庫并發(fā)控制:在辦公信息

42、管理系統(tǒng)管理信息系統(tǒng)中,同時可能有多個數(shù)據(jù)端在進(jìn)行數(shù)據(jù)操作。當(dāng)多個用戶試圖同時修改數(shù)據(jù)時,需要建立控制機(jī)制來防止一個用戶的修改對同時操作的其他用戶所作的修改產(chǎn)生不利的影響。處理這種情況的系統(tǒng)叫做“并發(fā)控制”。處理并發(fā)的技術(shù)主要是封鎖。J2EE數(shù)據(jù)結(jié)構(gòu)基于斷開的數(shù)據(jù),使用開放式并發(fā)。</p><p>  3.2 使用存儲過程</p><p>  在使用 SQL Server 2000 創(chuàng)建

43、應(yīng)用程序時,T-SQL 編程語言是應(yīng)用程序和 SQL Server 數(shù)據(jù)庫之間的主要編程接口。使用 T-SQL 程序時,可用兩種方法存儲和執(zhí)行程序。可以在本地存儲程序,并創(chuàng)建向 SQL Server 發(fā)送命令并處理結(jié)果的應(yīng)用程序;也可以將程序在 SQL Server 中存儲為存儲過程,并創(chuàng)建執(zhí)行存儲過程并處理結(jié)果的應(yīng)用程序。 </p><p>  SQL Server 中的存儲過程與其它編程語言中的過程類似,原因

44、是存儲過程可以: </p><p>  接受輸入?yún)?shù)并以輸出參數(shù)的形式將多個值返回至調(diào)用過程或批處理。</p><p>  包含執(zhí)行數(shù)據(jù)庫操作(包括調(diào)用其它過程)的編程語句。 </p><p>  向調(diào)用過程或批處理返回狀態(tài)值,以表明成功或失敗(以及失敗原因)。 </p><p>  使用 SQLServer 中的存儲過程而不使用存儲在數(shù)據(jù)計(jì)

45、算機(jī)本地的 Transact-SQL 程序的優(yōu)點(diǎn)有:</p><p>  允許模塊化程序設(shè)計(jì)。 </p><p>  只需創(chuàng)建過程一次并將其存儲在數(shù)據(jù)庫中,以后即可在程序中調(diào)用該過程任意次。存儲過程可由在數(shù)據(jù)庫編程方面有專長的人員創(chuàng)建,并可獨(dú)立于程序源代碼而單獨(dú)修改。</p><p><b>  允許更快執(zhí)行。 </b></p>

46、<p>  如果某操作需要大量 T-SQL 代碼或需重復(fù)執(zhí)行,存儲過程將比 T-SQL 批代碼的執(zhí)行要快。將在創(chuàng)建存儲過程時對其進(jìn)行分析和優(yōu)化,并可在首次執(zhí)行該過程后使用該過程的內(nèi)存中版本。每次運(yùn)行 T-SQL 語句時,都要從數(shù)據(jù)端重復(fù)發(fā)送,并且在SQL Server每次執(zhí)行這些語句時,都要對其進(jìn)行編譯和優(yōu)化。</p><p><b>  減少網(wǎng)絡(luò)流量。</b></p>

47、<p>  一個需要數(shù)百行 T-SQL 代碼的操作由一條執(zhí)行過程代碼的單獨(dú)語句就可實(shí)現(xiàn),而不需要在網(wǎng)絡(luò)中發(fā)送數(shù)百行代碼。</p><p>  可作為安全機(jī)制使用。 </p><p>  即使對于沒有直接執(zhí)行存儲過程中語句的權(quán)限的用戶,也可授予他們執(zhí)行該存儲過程的權(quán)限。</p><p>  此外在web編程方面,存儲過程在安全問題上還可以防止動態(tài)SQL漏

48、洞攻擊,筆者經(jīng)過一些調(diào)查,發(fā)現(xiàn)現(xiàn)在很多網(wǎng)站都有動態(tài)sql漏洞。只需要將密碼字段的值設(shè)定為(' or '1'='1)即可使用該網(wǎng)站的管理功能。</p><p>  我所開發(fā)的辦公信息管理系統(tǒng)管理信息系統(tǒng),無論在windows窗體編程和jsp Web編程上都使用存儲過程與數(shù)據(jù)庫交互。</p><p>  3.3 JSP平臺概述</p><p&

49、gt;  辦公信息管理系統(tǒng)管理信息系統(tǒng)的開發(fā)是基于JSP平臺的,所有在這里我們簡單的介紹一下JSP平臺以及它的一些重要的技術(shù)</p><p>  JSP 是一種新的計(jì)算平臺,它簡化了在高度分布式 Internet 環(huán)境中的應(yīng)用程序開發(fā)。JSP 旨在實(shí)現(xiàn)下列目標(biāo): </p><p>  提供一個一致的面向?qū)ο蟮木幊汰h(huán)境,而無論對象代碼是在本地存儲和執(zhí)行,還是在本地執(zhí)行但在 Internet

50、上分布,或者是在遠(yuǎn)程執(zhí)行的。 </p><p>  提供一個將系統(tǒng)部署和版本控制沖突最小化的代碼執(zhí)行環(huán)境。 </p><p>  提供一個保證代碼(包括由未知的或不完全受信任的第三方創(chuàng)建的代碼)安全執(zhí)行的代碼執(zhí)行環(huán)境。 </p><p>  提供一個可消除腳本環(huán)境或解釋環(huán)境的性能問題的代碼執(zhí)行環(huán)境。 </p><p>  使開發(fā)人員的經(jīng)驗(yàn)在面

51、對類型大不相同的應(yīng)用程序(如基于 Windows 的應(yīng)用程序和基于 Web 的應(yīng)用程序)時保持一致。 </p><p>  按照工業(yè)標(biāo)準(zhǔn)生成所有通信,以確?;?JSP 的代碼可與任何其他代碼集成。 </p><p><b>  圖3-3</b></p><p>  JSP 具有兩個主要組件:公共語言運(yùn)行庫和 JSP 類庫。公共語言運(yùn)行庫是 J

52、SP 的基礎(chǔ)。您可以將運(yùn)行庫看作一個在執(zhí)行時管理代碼的代理,它提供核心服務(wù)(如內(nèi)存管理、線程管理和遠(yuǎn)程處理),而且還強(qiáng)制實(shí)施嚴(yán)格的類型安全以及可確保安全性和可靠性的其他形式的代碼準(zhǔn)確性。事實(shí)上,代碼管理的概念是運(yùn)行庫的基本原則。以運(yùn)行庫為目標(biāo)的代碼稱為托管代碼,而不以運(yùn)行庫為目標(biāo)的代碼稱為非托管代碼。JSP 的另一個主要組件是類庫,它是一個綜合性的面向?qū)ο蟮目芍赜妙愋图?,您可以使用它開發(fā)多種應(yīng)用程序,這些應(yīng)用程序包括傳統(tǒng)的命令行或圖形

53、用戶界面 (GUI) 應(yīng)用程序,也包括基于 JSP 所提供的最新創(chuàng)新的應(yīng)用程序(如 Web 窗體和 XML Web services)。</p><p>  JSP還具有多編程語言,現(xiàn)在可提供Visual Basic J2EE、Visual C# J2EE、Visual C++ J2EE、Visual J# J2EE等。JSP為幾種語言提供了統(tǒng)一的平臺和統(tǒng)一的編程模型。&l

54、t;/p><p>  J2EE 是一組向 J2EE 程序員公開數(shù)據(jù)訪問服務(wù)的類。J2EE 為創(chuàng)建分布式數(shù)據(jù)共享應(yīng)用程序提供了一組豐富的組件。它提供了對關(guān)系數(shù)據(jù)、XML 和應(yīng)用程序數(shù)據(jù)的訪問,因此是 JSP 中不可缺少的一部分。J2EE 支持多種開發(fā)需求,包括創(chuàng)建由應(yīng)用程序、工具、語言或 Internet 瀏覽器使用的前端數(shù)據(jù)庫數(shù)據(jù)端和中間層業(yè)務(wù)對象。</p><p>  可使用 JSP 開發(fā)下

55、列類型的應(yīng)用程序和服務(wù): </p><p><b>  控制臺應(yīng)用程序。 </b></p><p>  Windows GUI 應(yīng)用程序(Windows 窗體)。 </p><p>  JSP 應(yīng)用程序。 </p><p>  XML Web services。 </p><p>  Window

56、s 服務(wù)。 </p><p>  我的辦公信息管理系統(tǒng)管理信息系統(tǒng)中包括Windows窗體和JSP兩種應(yīng)用程序。</p><p>  3.4 J2EE技術(shù)探討</p><p>  3.4.1 J2EE概述</p><p>  J2EE 提供對 Microsoft SQL Server 等數(shù)據(jù)源以及通過 OLE DB 和 XML 公開的數(shù)據(jù)源

57、的一致訪問。數(shù)據(jù)共享使用者應(yīng)用程序可以使用 J2EE 來連接到這些數(shù)據(jù)源,并檢索、操作和更新數(shù)據(jù)。</p><p>  J2EE 有效地從數(shù)據(jù)操作中將數(shù)據(jù)訪問分解為多個可以單獨(dú)使用或一前一后使用的不連續(xù)組件。J2EE 包含用于連接到數(shù)據(jù)庫、執(zhí)行命令和檢索結(jié)果的 JSP 數(shù)據(jù)提供程序。您可以直接處理檢索到的結(jié)果,或?qū)⑵浞湃?J2EE DataSet 對象,以便與來自多個源的數(shù)據(jù)或在層之間進(jìn)行遠(yuǎn)程處理的數(shù)據(jù)組合在一起

58、,以特殊方式向用戶公開。J2EE DataSet 對象也可以獨(dú)立于 JSP 數(shù)據(jù)提供程序使用,以管理應(yīng)用程序本地的數(shù)據(jù)。</p><p>  3.4.2 J2EE訪問數(shù)據(jù)的基本方法</p><p>  J2EE 結(jié)構(gòu)如下: </p><p><b>  圖3-4</b></p><p>  從圖3-4可以看出,J2EE提

59、供了兩種訪問數(shù)據(jù)的基本方法:通過DataReader和DataSet。下面分別討論這兩種方法:</p><p>  DataReader:</p><p>  J2EE DataReader 從數(shù)據(jù)庫中檢索只讀、只進(jìn)的數(shù)據(jù)流。查詢結(jié)果在查詢執(zhí)行時返回,在并存儲在數(shù)據(jù)端的網(wǎng)絡(luò)緩沖區(qū)中,直到您使用 DataReader 的 Read 方法對它們發(fā)出請求。使用 DataReader 可以提高應(yīng)用

60、程序的性能,因?yàn)橐坏?shù)據(jù)可用,DataReader 方法就立即檢索該數(shù)據(jù),而不是等待返回查詢的全部結(jié)果;并且在默認(rèn)情況下,該方法一次只在內(nèi)存中存儲一行,從而降低了系統(tǒng)開銷。</p><p>  DataReader 提供未緩沖的數(shù)據(jù)流,該數(shù)據(jù)流使過程邏輯可以有效地按順序處理從數(shù)據(jù)源中返回的結(jié)果。由于數(shù)據(jù)不在內(nèi)存中緩存,所以在檢索大量數(shù)據(jù)時,DataReader 是一種適合的選擇。 </p><

61、p><b>  DataSet</b></p><p>  J2EE DataSet 是數(shù)據(jù)的一種內(nèi)存駐留表示形式,無論它包含的數(shù)據(jù)來自什么數(shù)據(jù)源,它都會提供一致的關(guān)系編程模型。一個 DataSet 表示整個數(shù)據(jù)集,其中包含對數(shù)據(jù)進(jìn)行包含、排序和約束的表以及表間的關(guān)系。</p><p>  如圖3-4所示,一個DataSet可以包含多個DataTable,利用數(shù)

62、據(jù)存儲的信息對它們進(jìn)行填充.可以在DataSet中包含DataRelation對象, DataRelation對象用來描述DataSet中表之間的關(guān)系。這個DataRelation對象的所包含的約束就是我們在3.14中所講的數(shù)據(jù)庫完整性設(shè)計(jì)的內(nèi)容。</p><p>  總之DataSet最大的特點(diǎn)就是:不依賴于連續(xù)的活動連接,其值是數(shù)據(jù)源的一個內(nèi)存副本。</p><p><b>

63、  圖3-5</b></p><p>  圖3-5描述了用DataSet操作SQLserver2000的一般方法。</p><p>  用DataSet訪問常規(guī)數(shù)據(jù)源的基本步驟是,先建立一個DataAdapter對象,如果只需只讀訪問數(shù)據(jù),那么只要對DataAdapter指定一個SelectCommand即可。然后用DataAdapter填充DataSet。如果需要插入,更新或

64、者刪除數(shù)據(jù),則需要在DataAdapter中相應(yīng)的指定InsertCommand、UpdateCommand以及DeleteCommand,最后調(diào)用DataAdapter的Update方法。</p><p>  3.4.3 使用J2EE操作SQLserver2000</p><p>  我的辦公信息管理系統(tǒng)管理信息系統(tǒng)使用的是SQLserver2000數(shù)據(jù)庫。</p><

65、;p>  在闡述了一些J2EE的基本內(nèi)容后,我們來有針對性的講一下如何通過J2EE訪問SQLserver2000數(shù)據(jù)庫。</p><p>  最新的JSP1.1 包括 SQL Server JSP 數(shù)據(jù)提供程序(用于 Microsoft SQL Server 7.0 版或更高版本)、OLE DB JSP 數(shù)據(jù)提供程序和 ODBC JSP 數(shù)據(jù)提供程序以及Oracle JSP 數(shù)據(jù)提供程序。分別可以建立四種不

66、同連接,其主要功能如下。</p><p>  (1) SqlConnection - 該對象管理與 SQL Server 7.0 版或更高版本的連接。通過忽略 OLE DB 層(還包括其他措施),對該對象進(jìn)行優(yōu)化以便將其用于 SQL Server 7.0 或更高版本。 </p><p>  (2) OleDbConnection - 該對象管理與可通過 OLE DB 訪問的任何數(shù)據(jù)存儲區(qū)的

67、連接。 </p><p>  (3) OdbcConnection – 該對象管理與通過使用連接字符串或 ODBC 數(shù)據(jù)源名稱 (DSN) 創(chuàng)建的數(shù)據(jù)源的連接。 </p><p>  (4) OracleConnection – 該對象管理與 Oracle 數(shù)據(jù)庫的連接。 </p><p>  雖說SQL Server JSP 數(shù)據(jù)提供程序、OLE DB JSP 數(shù)

68、據(jù)提供程序和 ODBC JSP 數(shù)據(jù)提供程序都能訪問SQLserver數(shù)據(jù)庫,但微軟公司推薦使用SQL Server JSP 數(shù)據(jù)提供程序</p><p>  辦公信息管理系統(tǒng)管理信息系統(tǒng)使用的就是SQL Server JSP 數(shù)據(jù)提供程序。以下通過一些例子介紹辦公信息管理系統(tǒng)管理系統(tǒng)中是如何通過SQL Server JSP 數(shù)據(jù)提供程序與SQLserver2000數(shù)據(jù)庫進(jìn)行交互的。</p><

69、;p>  在J2EE中使用SQL Server JSP 數(shù)據(jù)提供程序,首先要導(dǎo)入System.Data.SqlClient命名空間。我們舉例說明J2EE與SQLserver2000數(shù)據(jù)庫交互的兩種常見方式:A.直接使用數(shù)據(jù)命令;B.使用數(shù)據(jù)集。</p><p>  A. 使用數(shù)據(jù)命令與數(shù)據(jù)庫交互</p><p>  要在數(shù)據(jù)庫中執(zhí)行操作,應(yīng)執(zhí)行 SQL 語句或存儲過程(它包括 SQL

70、 語句)。您使用 SQL 語句或存儲過程讀寫行并執(zhí)行聚合函數(shù),例如添加或求平均值。您還使用 SQL 語句或存儲過程創(chuàng)建或修改表或列、執(zhí)行事務(wù)等。</p><p>  以下是一個辦公信息管理系統(tǒng)管理系統(tǒng)中一個驗(yàn)證登陸的函數(shù)</p><p>  Public Function validateLogin(ByVal uid As String, ByVal pwd As String) As

71、Boolean</p><p>  Dim IsCorrect As Boolean = False</p><p>  Dim cnmy As New SqlConnection(“server=(local);database=lib2004;uid=sa;pwd=”)</p><p>  Dim cmd As New SqlCommand</p>

72、<p><b>  With cmd</b></p><p>  .Connection = cnmy</p><p>  .CommandType = CommandType.Text</p><p>  .CommandText = "select count(*) from manager where Man_id=

73、@Man_id and Man_pwd=@Man_pwd"</p><p><b>  End With</b></p><p>  Dim mMan_id As New SqlParameter("@Man_id", SqlDbType.NVarChar, 50)</p><p>  Dim mMan_p

74、wd As New SqlParameter("@Man_pwd", SqlDbType.NVarChar, 12)</p><p>  With cmd.Parameters</p><p>  .Add(mMan_id)</p><p>  .Add(mMan_pwd)</p><p><b>  End W

75、ith</b></p><p>  mMan_id.Value = uid</p><p>  mMan_pwd.Value = pwd</p><p><b>  Try</b></p><p>  cnmy.Open()</p><p>  If cmd.ExecuteScalar

76、 = 1 Then</p><p>  IsCorrect = True</p><p><b>  End If</b></p><p>  Catch ex As Exception</p><p>  MessageBox.Show("登陸驗(yàn)證時數(shù)據(jù)庫發(fā)生錯誤" + vbCrLf + ex.Me

77、ssage, _</p><p>  "error", MessageBoxButtons.OK, MessageBoxIcon.Stop)</p><p>  Return False</p><p><b>  Finally</b></p><p>  cnmy.Close()</p>

78、;<p>  If Not cnmy Is Nothing Then</p><p>  cnmy.Dispose()</p><p><b>  End If</b></p><p><b>  End Try</b></p><p>  Return IsCorrect</p

79、><p>  End Function</p><p>  現(xiàn)在對這個函數(shù)按步驟詳細(xì)說明。</p><p>  該例子體現(xiàn)了如何執(zhí)行sql語句。</p><p>  該實(shí)例用到了System.Data.SqlClient命名空間中兩個重要的對象:1.連接對象SqlConnection;2.sql命令對象SqlCommand。</p>

80、<p>  SqlConnection 對象表示與 SQL Server 數(shù)據(jù)源的一個唯一的會話。對于數(shù)據(jù)端/服務(wù)器數(shù)據(jù)庫系統(tǒng),它相當(dāng)于到服務(wù)器的網(wǎng)絡(luò)連接。</p><p><b>  其重要屬性如下表:</b></p><p>  ConnectionString格式如下:</p><p>  使用sql驗(yàn)證方式:(server=

81、服務(wù)器名稱;database=數(shù)據(jù)庫名稱;uid=用戶名;pwd=密碼)</p><p>  使用windows集成驗(yàn)證(server=服務(wù)器名稱;database=數(shù)據(jù)庫名稱;Integrated Security=SSPI)</p><p>  SqlCommand對象表示要對 SQL Server 數(shù)據(jù)庫執(zhí)行的一個 T-SQL 語句或存儲過程。其重要屬性如下:</p>

82、<p>  SqlCommand 特別提供了以下對 SQL Server 數(shù)據(jù)庫執(zhí)行命令的方法:</p><p>  直接使用數(shù)據(jù)命令的基本步驟是:</p><p>  新建一個SqlConnection對象,設(shè)置其ConnectionString屬性。</p><p>  新建一個SqlCommand對象,分別設(shè)置其CommandText、Command

83、Timeout、CommandType、Connection屬性。</p><p>  如果要執(zhí)行的T-SQL 語句或存儲過程帶有參數(shù),則先要設(shè)定SqlCommand對象的Parameters屬性。</p><p>  調(diào)用SqlConnection對象的open方法打開連接。</p><p>  執(zhí)行SqlCommand命令。執(zhí)行的方式及相應(yīng)的返回結(jié)果見上表。&l

84、t;/p><p>  調(diào)用SqlConnection對象的close方法關(guān)閉連接。</p><p>  本例使用ExecuteScalar方法返回一個聚合函數(shù)count(*)的值,count(*)返回結(jié)果為所查詢到記錄的個數(shù)。如果用戶名和密碼均符合的話,則返回一條記錄,此時Count(*)值為1,符合條件,就成功的通過了驗(yàn)證。</p><p><b>  B.

85、使用數(shù)據(jù)集</b></p><p>  使用數(shù)據(jù)集DataSet與SQLserver數(shù)據(jù)庫交互請參見3.3.2中關(guān)于DataSet的介紹。只是將通用的DataAdapter對象改為專用的SqlClient命名空間中的SqlDataAdapter對象即可,這里就不再重復(fù)。</p><p><b>  4 系統(tǒng)使用說明</b></p><

86、p>  辦公信息管理系統(tǒng)管理信息系統(tǒng)功能齊全,界面友好,高效的異常處理使程序不會突然中斷。這里主要介紹系統(tǒng)的軟硬件要求及安裝方法。</p><p><b>  4.1環(huán)境要求</b></p><p><b>  4.2系統(tǒng)的安裝</b></p><p><b>  數(shù)據(jù)服務(wù)器的安裝</b>&l

87、t;/p><p>  1.安裝SQLserver2000</p><p>  2.在SQLserver2000的查詢分析器中,執(zhí)行我們提供的腳本lib2004.sql</p><p>  3.建立一個用于專門操作“辦公信息管理系統(tǒng)管理信息系統(tǒng)”數(shù)據(jù)庫的帳號</p><p><b>  網(wǎng)頁服務(wù)器的安裝</b></p&g

88、t;<p>  1.確認(rèn)已經(jīng)安裝了IIS</p><p><b>  2.安裝JSP</b></p><p>  3.安裝MDAC 2.8</p><p>  4.安裝辦公信息管理系統(tǒng)管理信息系統(tǒng)(WebForms)</p><p>  5.然后在IIS對應(yīng)的虛擬目錄中設(shè)定sql連接字符串的值</p&

89、gt;<p><b>  數(shù)據(jù)端的安裝</b></p><p><b>  1.安裝JSP</b></p><p>  2.安裝MDAC 2.8</p><p>  3.安裝辦公信息管理系統(tǒng)管理信息系統(tǒng)(管理員版)</p><p>  4.第一次運(yùn)行程序時會提醒設(shè)置數(shù)據(jù)服務(wù)器</

90、p><p>  數(shù)據(jù)服務(wù)器連接信息以及登陸信息請咨詢管理員</p><p><b>  4.3常見操作</b></p><p>  登陸驗(yàn)證、、、綜合查詢等常見的辦公信息管理系統(tǒng)事務(wù),在系統(tǒng)中都有體現(xiàn)。詳細(xì)的使用方法請參考程序的幫助文檔,這里不再重復(fù)。</p><p>  5 程序源代碼經(jīng)典部分選錄</p>

91、<p>  <%@ page contentType="text/html; charset=gb2312" language="java" %></p><p>  <%@ page import="java.util.*"%></p><p>  <%@ page import=&qu

92、ot;java.sql.*"%></p><p>  <%@ page import="java.text.*"%></p><p>  <%@ page import="cn.edu.buaa.nlsde.db.*"%></p><p>  <%request.setCharac

93、terEncoding("GB2312");</p><p>  String TheMessage = "";</p><p>  String sql1 = "";</p><p>  String sql2 = "";</p><p>  String sq

94、l3 = "";</p><p>  String sql4 = "";</p><p>  String TheAddDate = "";</p><p>  int QueryLabel = 0;</p><p>  String TheName = "";&

95、lt;/p><p>  String TheDepartment = "";</p><p>  String TheProjectName = "";</p><p>  int TheFundTypeA = 0;</p><p>  int TheFundTypeB = 0;</p>&l

96、t;p>  int TheFundTypeC = 0;</p><p>  int TheFundTypeD = 0;</p><p>  String TheSummary = "";</p><p>  String TheRemark = "";</p><p>  String TheMo

97、difyDate = "";</p><p>  int TheSum = 0;</p><p>  String temp = "";</p><p>  String SqlString = "";</p><p>  Calendar cal = Calendar.getIns

98、tance();</p><p>  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");</p><p>  String Date = format.format(cal.getTime());</p><p>  format = new SimpleDateFormat

99、("yyyy");</p><p>  String Year = format.format(cal.getTime());</p><p>  format = new SimpleDateFormat("MM");</p><p>  String Month = format.format(cal.getTime())

100、;</p><p>  format = new SimpleDateFormat("dd");</p><p>  String Day = format.format(cal.getTime());</p><p>  ResultSet RSRecordResult = null;</p><p>  ResultS

101、et RSThisRecord = null;</p><p>  Hashtable HTThisRecord = new Hashtable();</p><p>  //判斷用戶是否登錄</p><p>  if (session.getAttribute("ID") == null) {</p><p>  res

102、ponse.sendRedirect("../login.jsp");</p><p><b>  }</b></p><p>  //判斷用戶是否具有財(cái)務(wù)管理員身份</p><p>  if (session.getAttribute("IsFinancialManager").equals("

103、;False")) {</p><p>  response.sendRedirect("finance.jsp");</p><p><b>  }</b></p><p><b>  //連接系統(tǒng)數(shù)據(jù)庫</b></p><p>  //Connection conn

104、 = (new DBConnect()).getODBCConn("EIMS");</p><p>  Connection conn = (new DBConnect()).getConnPoolConn("eims");</p><p>  Statement stmt = conn.createStatement();</p>&

105、lt;p>  boolean Warning = false;</p><p>  //查詢某個財(cái)務(wù)記錄</p><p>  if (request.getParameter("Query") != null) {</p><p>  //獲得用戶的查詢條件</p><p>  if (request.getPara

106、meter("QueryCheck1") != null</p><p>  && (request.getParameter("FinancialRecordID") != null)) {</p><p>  sql1 = "and ID=" + request.getParameter("Finan

107、cialRecordID");</p><p><b>  }</b></p><p><b>  else {</b></p><p>  sql1 = " ";</p><p><b>  }</b></p><p> 

108、 if (request.getParameter("QueryCheck2") != null</p><p>  && (request.getParameter("FinancialProjectName") != null)) {</p><p><b>  sql2 =</b></p>&

109、lt;p>  " and ProjectName='"</p><p>  + request.getParameter("FinancialProjectName")</p><p><b>  + "'";</b></p><p><b>  }&l

110、t;/b></p><p><b>  else {</b></p><p>  sql2 = " ";</p><p><b>  }</b></p><p>  if (request.getParameter("QueryCheck3") != n

111、ull) {</p><p><b>  sql3 =</b></p><p>  " and Name='" + request.getParameter("SelectName") + "'";</p><p><b>  }</b></

112、p><p><b>  else {</b></p><p>  sql3 = " ";</p><p><b>  }</b></p><p>  if (request.getParameter("QueryCheck4") != null) {</p&

113、gt;<p>  TheAddDate =</p><p>  request.getParameter("AddYear")</p><p><b>  + "-"</b></p><p>  + request.getParameter("AddMonth")<

114、/p><p><b>  + "-"</b></p><p>  + request.getParameter("AddDay");</p><p>  sql4 = " and AddDate='" + TheAddDate + "' ";</p

115、><p><b>  }</b></p><p><b>  else {</b></p><p>  sql4 = " ";</p><p><b>  }</b></p><p>  SqlString =</p>&l

116、t;p>  "select * from FinancialRecord where AccountName='"</p><p>  + session.getAttribute("Name")</p><p><b>  + "' "</b></p><p>

117、<b>  + sql1</b></p><p><b>  + sql2</b></p><p><b>  + sql3</b></p><p><b>  + sql4</b></p><p>  + " order by Name&quo

118、t;;</p><p>  System.out.println(SqlString);</p><p>  RSRecordResult = stmt.executeQuery(SqlString);</p><p>  TheMessage = "您查詢的財(cái)務(wù)記錄如下";</p><p>  QueryLabel =

119、2;</p><p><b>  }</b></p><p>  //用戶選定了查詢出來的某個財(cái)務(wù)記錄</p><p>  else if (request.getParameter("SelectRecord") != null) {</p><p>  TheMessage = "請?jiān)谙?/p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論