2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩40頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  摘  要</b></p><p>  本文首先闡述了基于.NET Framework平臺的圖書館管理信息系統的開發背景以及其實踐意義,其次說明了圖書館管理信息系統的功能以及相比同類軟件的創新之處。然后就圖書館管理系統開發中所使用的一些的技術進行研究探討。主要針對數據庫的設計技術、存儲過程技術、ADO.NET技術以及用SQL Server .NET Framewo

2、rk 數據提供程序訪問SQLserver2000數據庫技術四個方面進行了研究。最后還附上了圖書館管理信息系統的安裝說明、簡單使用說明和一些通用性的經典代碼。筆者化了大量的時間用于程序設計,這也是筆者工作的重點,所開發的軟件具有實用價值,所編寫的代碼對.NET程序員也有很好的參考性。在系統的開發過程中,筆者深刻體會到了.NET平臺的強大性、優越性以及存儲過程在提高數據訪問性能和增強數據訪問安全性上所起到的重要作用。此外,對于關系代數在數據

3、庫科學里的應用,筆者在編程過程中也做了一定的研究。</p><p>  關鍵詞: 數據庫;.NET Framework;ADO.NET;存儲過程;SQL Server .NET Framework 數據提供程序</p><p><b>  ABSTRACT</b></p><p>  The Management Information Sys

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

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

6、 2000 using SQL Server .NET Framework Data Provider . In the end, it details the setup introduction and the u</p><p>  Keywords: Database; NET Framework; ADO.NET; Stored Procedure; SQL Server .NET Framework

7、Data Provider </p><p><b>  目 錄</b></p><p>  1 系統開發背景以及主要內容闡述</p><p>  隨著當今社會的迅猛發展,知識變的越來越重要,終身學習的觀念已經深入人心。而圖書館――這一傳統的獲取知識的場所,它的地位也變的越來越重要。而圖書館的管理方法也更新了很多次。從最初的手工管理到現在

8、的計算機管理等等。</p><p>  筆者經過調查一些圖書館的現狀,發現各圖書館使用的管理系統基本都是幾年前的產品,大多使用VB+ADO方式,web平臺也主要使用asp或php開發。開發技術比較陳舊,功能上也有一些不足。而且以前的VB面向對象化編程(OOP)支持的不是很好,軟件維護起來也相當困難。</p><p>  Microsoft.Net技術的推出,將計算帶入一個新時代?,F在.Ne

9、t已經引起業界廣泛的關注。.Net是專門為程序員設計的、功能強大的開發工具,利用該工具能夠構建各類應用程序。.NET可以說是博大精深,蘊含者豐富的新技術新思想。</p><p>  .Net使應用程序的功能更強大,使系統開發更簡單,使系統的部署更輕松。而.NET包含的統一的類庫,統一的數據結構使得各類編程模型更統一。</p><p>  筆者個人對.NET技術非常感興趣,在這方面也做過大量

10、的研究。又鑒于當前流行的圖書館管理信息系統技術都比較陳舊,就萌發了用.NET開發一個新圖書館管理信息系統的想法。</p><p>  很高興它成為為我畢業設計研究的課題。</p><p>  系統的實踐意義有兩個:1開發出的系統功能強大,可以應用于各大中型圖書館使用,可以根據客戶的要求添加功能。2由于.NET推出的時間不算很長,所以網上很少有用.NET開發的公開源代碼的大型系統。本系統可

11、以給廣大的.NET編程愛好者一些參考。</p><p>  本文理論部分主要針對數據庫設計技術、存儲過程技術、ADO.NET技術以及用SQL Server .NET Framework 數據提供程序訪問SQLserver2000數據庫技術這四個方面進行了研究和探討。</p><p>  圖書館管理信息系統的每一行代碼都是精雕細琢出來的,從里面體現出.NET的強大性以及優越性。筆者在編程過程

12、中查閱了大量的書籍,參考了大量MSDN以及各大網站的技術文章,全部代碼約有一萬兩千行左右。筆者為此做了大量的工作。</p><p>  在系統的開發過程中,筆者深刻體會到了.NET平臺的強大性以及優越性以及存儲過程在提高數據訪問性能和增強數據訪問安全性上所起到的重要作用。</p><p><b>  系統概述</b></p><p>  圖書館

13、管理系統基于Microsoft公司最新的.NET Framework平臺構建,編碼的基本語言是VB.NET。開發過程中統一使用.NET框架的數據類型、方法,拋棄了原來vb6的內容。充分體現了.NET的優越性,使軟件易安裝部署、易維護。</p><p>  系統使用ADO.NET+SQLserver2000模式,數據層基本都基于存儲過程構建,使得速度更快、安全性更高。</p><p>  2

14、.1系統提供的功能:</p><p>  針對圖書館管理員設計的部分:</p><p>  管理部分是一個基于WinForms的windows窗體應用程序,主要為圖書館管理人員提供服務。截圖如下:</p><p>  管理部分提供以下功能:</p><p>  用戶功能。(提供登陸驗證、用戶切換,管理員鎖定系統等功能。)</p>

15、<p><b>  事務處理</b></p><p>  圖書證掛失管理。(可以針對讀者情況對圖書證進行掛失,以防冒借。)</p><p>  借書、還書管理。(實現日常圖書借閱及歸還。)</p><p><b>  數據管理</b></p><p>  圖書、讀者管理。(實現圖書、讀

16、者的添加,刪除,編輯。)</p><p>  綜合查詢統計。(可以根據不同條件的組合檢索圖書或讀者以及借閱數據,對檢索出來的數據可提供多種方式的操作:導出為Excel格式、pdf格式、或導出為水晶報表以便打印等。)</p><p>  系統設定。(設置一些圖書館基本規則,如讀者類別、圖書類別、讀者借閱最大天數等,此外設定數據服務器信息也在這里。)</p><p> 

17、 幫助功能。(提供一個chm幫助文檔,幫助圖書館工作人員快速適應本系統,此外還提供在線問題反饋,軟件更新提示等功能。)</p><p>  針對讀者設計的部分:</p><p>  由于讀者的多元性和位置不確定性,該部分采取基于B/S的方式實現。代碼使用ASP.NET編寫,利用ASP.NET的優點,可以自動適應多種客戶瀏覽器。截圖如下:</p><p>  讀者只需

18、要有一臺聯網的計算機和一個常用WEB瀏覽器。就可以輕松的進行圖書查詢、更改個人信息、向圖書館反饋信息等。該部分主要提供以下功能:</p><p>  登陸驗證。(防止讀者信息被盜用。)</p><p>  圖書查詢。(一個綜合的圖書查詢系統,可以方便的使讀者查到需要的書籍。)</p><p>  讀者個人信息查詢以及管理。(可以適當的更改一些讀者個人的資料,如ema

19、il等,此外在這里還可以查到讀者當前的、所有的借閱記錄等。)</p><p>  信息服務。(定期公布超期的讀者列表,以及新到的圖書等信息。)</p><p>  2.2系統創新部分以及一些特點</p><p>  1)首先本軟件是基于.net平臺構建的,這是以前從未有過的。</p><p>  2)軟件很好的解決了一個關于時間沖突的問題。&

20、lt;/p><p>  時間沖突問題闡述如下:</p><p>  圖書館管理信息系統是一個網絡版的系統,其運作方式是有一臺主數據服務器、還有若干個負責各項功能的客戶端。舉個例子:圖書館可能有若干臺客戶端電腦用于還書管理、還可能有若干臺用于借書管理、還可能有若干臺用于圖書、讀者信息維護等。因為每臺電腦的系統時間可能會發生改變,這就會造成數據錯誤。比如張某于2月10日在負責借書的A號電腦上借了一

21、本書,可能A的系統時間被誤設定為2月5日。如果張某的最大借書時間為一個月,則他應該還書的時間就被誤設定為3月5日。</p><p>  筆者在開發過程中也參考了一些相關的圖書館軟件,發現有的系統根本沒有注意到這個問題。有的是在軟件客戶端設定一個時間校準的提示或者干脆就手工輸入時間。這樣無疑給操作人員增加了負擔,而且校準還不一定正確。</p><p>  在本系統中,所有的時間都是基于服務器

22、時間的。即軟件中必要的與時間有關的操作。都采用標準的T-SQL函數GETDATE()從數據服務器返回時間。這就避免了功能上的錯誤,也避免了給操作人員帶來的不必要負擔。</p><p>  3)用ADO.NET的開放式并發進行并發控制</p><p>  在圖書館系統的使用過程中,可能同時有多臺客戶機在操作同一個數據行。比如負責修改圖書信息的A號電腦正在修改編號為XXX的書籍,而編號為B的電

23、腦正試圖刪除編號為XXX的書籍。這樣做肯定會有一些沖突,這就要討論并發控制。</p><p>  當多個用戶試圖同時修改數據時,需要建立控制機制來防止一個用戶的修改對同時操作的其他用戶所作的修改產生不利的影響。處理這種情況的系統叫做“并發控制”。</p><p>  在以前的編程模型中,大多使用保守式并發控制,即在從獲取記錄直到記錄在數據庫中更新的這段時間內,該行對用戶不可用。ADO.NE

24、T的數據集DataSet是一個斷開式的模型,不適合保守式并發。在我所編寫的圖書館管理信息系統中,使用了開放式并發控制(參見附錄中我翻譯的英文文章),即只有當實際更新數據時,該行才對其他用戶不可用。更新將在數據庫中檢查該行并確定是否進行了任何更改。如果試圖更新已更改的記錄,則將導致并發沖突。</p><p>  4)全部數據層都基于存儲過程構建</p><p>  使用存儲過程,可以減少網絡

25、流量,提高程序的速度以及安全性。具體內容請參見筆者文章里對存儲過程的研究討論。</p><p>  系統設計過程及原理闡述</p><p>  管理信息系統(以下簡稱MIS)服務于現代化的企事業管理,是提供企事業工作效率和經濟效益的計算機網絡系統。</p><p>  管理信息系統涉及的因素非常多、非常復雜,開發起來具有一定的難度。如果掌握了一套行之有效的開發方法,

26、以及把握好MIS開發中的重點,開發中就可以大量的解約人力、財力等。</p><p>  我個人經過大量的研究、實踐。認為在MIS開發中,首先數據庫技術是MIS開發中的重要技術。數據庫開發成敗直接影響到整個MIS的開發。所以,構架一個優秀的MIS一定要有好的數據庫設計。本文討論的重點就是數據庫設計理論。主要是兩方面,一是基本的數據庫理論;二是.NET平臺上的ADO.NET數據訪問技術。</p><

27、;p>  其次,在MIS開發過程中,所使用的開發工具和應開發應用程序的種類也很重要。這里就不能不提到Microsoft公司的.NET Framework平臺。.NET Framework 是一種新的計算平臺,它簡化了在高度分布式 Internet 環境中的應用程序開發。它提供一個一致的面向對象的編程環境、提供一個將軟件部署和版本控制沖突最小化的代碼執行環境等等非常優秀的特點。在以后介紹開發過程中將簡單闡述。</p>

28、<p>  再次,界面的設計也是MIS的一個重點。界面一定要具有易學性及易使用性。在當今流行的程序設計中,設計包含用戶界面的應用程序時有兩種選擇:Windows 窗體和 Web 窗體。兩者在開發環境中都具有完全的設計時支持,并且可以提供豐富的用戶界面和高級應用程序功能以解決業務問題。要根據應用程序的具體功能來選擇到底開發何種應用程序。我所開發的這個圖書館管理信息系統是這兩者的結合。在管理功能方面,我使用了傳統的WinForms

29、技術。而在讀者使用方面的功能模塊,是用webForms開發的。</p><p><b>  3.1 數據庫設計</b></p><p>  數據庫技術是20世紀60年代后期產生何發展起來的一項計算機數據管理技術,現廣泛運用與各種信息處理以及科學研究上。數據庫技術已經成為當今時代非常重要的技術。</p><p>  當今流行的數據庫系統主要是以關

30、系數據庫為代表的第二代數據庫系統。</p><p>  當今流行的大型數據庫管理系統主要有SQL Server、Oracle、Sybase等。</p><p>  圖書館管理信息系統選用的是SQLserver2000數據庫管理系統。</p><p>  選擇它的原因有:SQLserver2000功能強大,能完整實現數據庫系統的所有功能。再者,我們選用的系統開發平臺是

31、微軟公司的.Net Framework平臺,它很好的支持了其公司的數據庫產品SQLserver2000,而且為了加快數據處理速度,.NET Framework平臺中還專門有一個SQL Server數據提供程序(System.Data.SqlClient)。</p><p>  圖書館管理信息系統使用SQLserver2000數據庫管理系統,最后設計的數據庫表如下:</p><p>  數據

32、庫名稱lib2004</p><p><b>  數據表有:</b></p><p><b>  數據庫表關系如下:</b></p><p><b>  圖3-1</b></p><p>  以下我們討論數據庫設計方法時均以圖書館管理信息系統數據庫(lib2004)為例.<

33、;/p><p>  3.1.1數據庫設計重點</p><p><b>  (1) 數據規范化</b></p><p><b>  (2) 數據完整性</b></p><p>  (3) 數據庫的保護</p><p>  3.1.2規范化設計</p><p&

34、gt;  良好的數據規范可以減少數據冗余和一些插入異常和刪除異常。使關系模式盡量滿足3NF。規范化設計的內容比較多,在這里就不一一闡述。請詳細體會lib2004數據庫中每個表的構建。如在這方面想有進一步研究的化,請參閱一些數據庫原理與技術方面的書籍。</p><p>  3.1.3數據庫完整性設計</p><p>  數據庫完整性共分三類</p><p>  (1)

35、 實體完整性規則</p><p>  實體完整性規則是指主關鍵字的任何部分不能為空值</p><p>  比如在圖書表(book)中</p><p>  條碼號(Book_code)是主關鍵字,其值就不能夠為空。</p><p>  主關鍵字不一定由一個字段組成,可以是多個字段的組合。</p><p>  (2)引用

36、完整性,又稱參照完整性,主要是描述存在關系間引用時,不能引用不存在的元組. </p><p><b>  圖3-2</b></p><p>  比如在圖書分類表(booksort)與圖書表(book)之間的關系(如圖3-2),這是一個典型的一對多關系。關系的主鍵方是booksort表中的Book_sort(圖書類別)字段,關系的外鍵方是book表中的Book_code

37、(圖書類別)字段。</p><p>  其引用完整性就是book表中的每一本書的圖書類別Book_sort或者為空值,或等于圖書分類表(booksort)中某行的Book_sort值。</p><p>  通俗的說法就是圖書不能屬于一個沒有定義的類別。</p><p>  (3)用戶自定義完整性</p><p>  這是一種比較有針對性的完整

38、性,由具體環境決定。例如:在讀者表(au)中,讀者的性別字段(Au_sex)的值必須為‘男’或‘女’。這就是一條用戶自定義完整性規則。</p><p>  這類完整性在SQLserver2000中的實現就是對相關表建一個check約束即可。比如在au表中建立一個CK_au約束,其約束表達式為([Au_sex] = '男' or [Au_sex] = '女'),就實現了值必須為‘男’

39、或‘女’的用戶自定義完整規則。</p><p>  3.1.4數據庫的保護</p><p>  數據庫的保護主要內容是數據庫的備份恢復、數據的事務性、以及如何進行并發控制。其中備份和恢復容易理解,這里主要闡述其它兩項。</p><p>  事務是一組操作序列.但是從用戶的角度看來,事務是一個不可分割的操作序列。事務中的操作要么都做,要么都不做.事務不應該丟失,不應該

40、被分割完成。</p><p>  舉個例子,從某個銀行帳戶向另一個帳戶轉入資金。這個過程分兩步,首先將資金從一個帳戶扣除,然后轉入另一帳戶。這個過程中,如果資金扣除以后由于一些因素導致失敗。則資金就從一個帳戶上扣除但沒有轉到另一個帳戶上,就導致了兩個用戶都失去了這筆資金。如果將這兩步組成一個事務,充分利用事務的共進共退性就可以避免這一點。</p><p>  SQLserver2000事務

41、語句主要包括BEGIN TRANSACTION(開始一個事務),COMMIT TRANSACTION(提交事務),ROLLBACK TRANSACTION(回滾事務)。</p><p>  數據庫并發控制:在圖書館管理信息系統中,同時可能有多個客戶端在進行數據操作。當多個用戶試圖同時修改數據時,需要建立控制機制來防止一個用戶的修改對同時操作的其他用戶所作的修改產生不利的影響。處理這種情況的系統叫做“并發控制”。處

42、理并發的技術主要是封鎖。ADO.NET數據結構基于斷開的數據,使用開放式并發。</p><p>  3.2 使用存儲過程</p><p>  在使用 SQL Server 2000 創建應用程序時,T-SQL 編程語言是應用程序和 SQL Server 數據庫之間的主要編程接口。使用 T-SQL 程序時,可用兩種方法存儲和執行程序??梢栽诒镜卮鎯Τ绦?,并創建向 SQL Server 發送

43、命令并處理結果的應用程序;也可以將程序在 SQL Server 中存儲為存儲過程,并創建執行存儲過程并處理結果的應用程序。 </p><p>  SQL Server 中的存儲過程與其它編程語言中的過程類似,原因是存儲過程可以: </p><p>  接受輸入參數并以輸出參數的形式將多個值返回至調用過程或批處理。</p><p>  包含執行數據庫操作(包括調用其它

44、過程)的編程語句。 </p><p>  向調用過程或批處理返回狀態值,以表明成功或失?。ㄒ约笆≡颍?。 </p><p>  使用 SQLServer 中的存儲過程而不使用存儲在客戶計算機本地的 Transact-SQL 程序的優點有:</p><p>  允許模塊化程序設計。 </p><p>  只需創建過程一次并將其存儲在數據庫中,

45、以后即可在程序中調用該過程任意次。存儲過程可由在數據庫編程方面有專長的人員創建,并可獨立于程序源代碼而單獨修改。</p><p><b>  允許更快執行。 </b></p><p>  如果某操作需要大量 T-SQL 代碼或需重復執行,存儲過程將比 T-SQL 批代碼的執行要快。將在創建存儲過程時對其進行分析和優化,并可在首次執行該過程后使用該過程的內存中版本。每次

46、運行 T-SQL 語句時,都要從客戶端重復發送,并且在SQL Server每次執行這些語句時,都要對其進行編譯和優化。</p><p><b>  減少網絡流量。</b></p><p>  一個需要數百行 T-SQL 代碼的操作由一條執行過程代碼的單獨語句就可實現,而不需要在網絡中發送數百行代碼。</p><p>  可作為安全機制使用。 &

47、lt;/p><p>  即使對于沒有直接執行存儲過程中語句的權限的用戶,也可授予他們執行該存儲過程的權限。</p><p>  此外在web編程方面,存儲過程在安全問題上還可以防止動態SQL漏洞攻擊,筆者經過一些調查,發現現在很多網站都有動態sql漏洞。只需要將密碼字段的值設定為(' or '1'='1)即可使用該網站的管理功能。</p><

48、p>  我所開發的圖書館管理信息系統,無論在windows窗體編程和asp.net Web編程上都使用存儲過程與數據庫交互。</p><p>  3.3 .NET Framework平臺概述</p><p>  圖書館管理信息系統的開發是基于.NET Framework平臺的,所有在這里我們簡單的介紹一下.NET Framework平臺以及它的一些重要的技術</p>&

49、lt;p>  .NET Framework 是一種新的計算平臺,它簡化了在高度分布式 Internet 環境中的應用程序開發。.NET Framework 旨在實現下列目標: </p><p>  提供一個一致的面向對象的編程環境,而無論對象代碼是在本地存儲和執行,還是在本地執行但在 Internet 上分布,或者是在遠程執行的。 </p><p>  提供一個將軟件部署和版本控制沖

50、突最小化的代碼執行環境。 </p><p>  提供一個保證代碼(包括由未知的或不完全受信任的第三方創建的代碼)安全執行的代碼執行環境。 </p><p>  提供一個可消除腳本環境或解釋環境的性能問題的代碼執行環境。 </p><p>  使開發人員的經驗在面對類型大不相同的應用程序(如基于 Windows 的應用程序和基于 Web 的應用程序)時保持一致。 &l

51、t;/p><p>  按照工業標準生成所有通信,以確?;?.NET Framework 的代碼可與任何其他代碼集成。 </p><p><b>  圖3-3</b></p><p>  .NET Framework 具有兩個主要組件:公共語言運行庫和 .NET Framework 類庫。公共語言運行庫是 .NET Framework 的基礎。您可

52、以將運行庫看作一個在執行時管理代碼的代理,它提供核心服務(如內存管理、線程管理和遠程處理),而且還強制實施嚴格的類型安全以及可確保安全性和可靠性的其他形式的代碼準確性。事實上,代碼管理的概念是運行庫的基本原則。以運行庫為目標的代碼稱為托管代碼,而不以運行庫為目標的代碼稱為非托管代碼。.NET Framework 的另一個主要組件是類庫,它是一個綜合性的面向對象的可重用類型集合,您可以使用它開發多種應用程序,這些應用程序包括傳統的命令行或

53、圖形用戶界面 (GUI) 應用程序,也包括基于 ASP.NET 所提供的最新創新的應用程序(如 Web 窗體和 XML Web services)。</p><p>  .NET Framework還具有多編程語言,現在可提供Visual Basic .NET、Visual C# .NET、Visual C++ .NET、Visual J# .NET等。.NET Frame

54、work為幾種語言提供了統一的平臺和統一的編程模型。</p><p>  ADO.NET 是一組向 .NET 程序員公開數據訪問服務的類。ADO.NET 為創建分布式數據共享應用程序提供了一組豐富的組件。它提供了對關系數據、XML 和應用程序數據的訪問,因此是 .NET Framework 中不可缺少的一部分。ADO.NET 支持多種開發需求,包括創建由應用程序、工具、語言或 Internet 瀏覽器使用的前端數

55、據庫客戶端和中間層業務對象。</p><p>  可使用 .NET Framework 開發下列類型的應用程序和服務: </p><p><b>  控制臺應用程序。 </b></p><p>  Windows GUI 應用程序(Windows 窗體)。 </p><p>  ASP.NET 應用程序。 </p&

56、gt;<p>  XML Web services。 </p><p>  Windows 服務。 </p><p>  我的圖書館管理信息系統中包括Windows窗體和ASP.NET兩種應用程序。</p><p>  3.4 ADO.NET技術探討</p><p>  3.4.1 ADO.NET概述</p>&

57、lt;p>  ADO.NET 提供對 Microsoft SQL Server 等數據源以及通過 OLE DB 和 XML 公開的數據源的一致訪問。數據共享使用者應用程序可以使用 ADO.NET 來連接到這些數據源,并檢索、操作和更新數據。</p><p>  ADO.NET 有效地從數據操作中將數據訪問分解為多個可以單獨使用或一前一后使用的不連續組件。ADO.NET 包含用于連接到數據庫、執行命令和檢索結

58、果的 .NET Framework 數據提供程序。您可以直接處理檢索到的結果,或將其放入 ADO.NET DataSet 對象,以便與來自多個源的數據或在層之間進行遠程處理的數據組合在一起,以特殊方式向用戶公開。ADO.NET DataSet 對象也可以獨立于 .NET Framework 數據提供程序使用,以管理應用程序本地的數據。</p><p>  3.4.2 ADO.NET訪問數據的基本方法</p&

59、gt;<p>  ADO.NET 結構如下: </p><p><b>  圖3-4</b></p><p>  從圖3-4可以看出,ADO.NET提供了兩種訪問數據的基本方法:通過DataReader和DataSet。下面分別討論這兩種方法:</p><p>  DataReader:</p><p> 

60、 ADO.NET DataReader 從數據庫中檢索只讀、只進的數據流。查詢結果在查詢執行時返回,在并存儲在客戶端的網絡緩沖區中,直到您使用 DataReader 的 Read 方法對它們發出請求。使用 DataReader 可以提高應用程序的性能,因為一旦數據可用,DataReader 方法就立即檢索該數據,而不是等待返回查詢的全部結果;并且在默認情況下,該方法一次只在內存中存儲一行,從而降低了系統開銷。</p>&l

61、t;p>  DataReader 提供未緩沖的數據流,該數據流使過程邏輯可以有效地按順序處理從數據源中返回的結果。由于數據不在內存中緩存,所以在檢索大量數據時,DataReader 是一種適合的選擇。 </p><p><b>  DataSet</b></p><p>  ADO.NET DataSet 是數據的一種內存駐留表示形式,無論它包含的數據來自什么數

62、據源,它都會提供一致的關系編程模型。一個 DataSet 表示整個數據集,其中包含對數據進行包含、排序和約束的表以及表間的關系。</p><p>  如圖3-4所示,一個DataSet可以包含多個DataTable,利用數據存儲的信息對它們進行填充.可以在DataSet中包含DataRelation對象, DataRelation對象用來描述DataSet中表之間的關系。這個DataRelation對象的所包含的

63、約束就是我們在3.14中所講的數據庫完整性設計的內容。</p><p>  總之DataSet最大的特點就是:不依賴于連續的活動連接,其值是數據源的一個內存副本。</p><p><b>  圖3-5</b></p><p>  圖3-5描述了用DataSet操作SQLserver2000的一般方法。</p><p> 

64、 用DataSet訪問常規數據源的基本步驟是,先建立一個DataAdapter對象,如果只需只讀訪問數據,那么只要對DataAdapter指定一個SelectCommand即可。然后用DataAdapter填充DataSet。如果需要插入,更新或者刪除數據,則需要在DataAdapter中相應的指定InsertCommand、UpdateCommand以及DeleteCommand,最后調用DataAdapter的Update方法。&l

65、t;/p><p>  3.4.3 使用ADO.NET操作SQLserver2000</p><p>  我的圖書館管理信息系統使用的是SQLserver2000數據庫。</p><p>  在闡述了一些ADO.NET的基本內容后,我們來有針對性的講一下如何通過ADO.NET訪問SQLserver2000數據庫。</p><p>  最新的.NET

66、 Framework1.1 包括 SQL Server .NET Framework 數據提供程序(用于 Microsoft SQL Server 7.0 版或更高版本)、OLE DB .NET Framework 數據提供程序和 ODBC .NET Framework 數據提供程序以及Oracle .NET Framework 數據提供程序。分別可以建立四種不同連接,其主要功能如下。</p><p>  (1)

67、 SqlConnection - 該對象管理與 SQL Server 7.0 版或更高版本的連接。通過忽略 OLE DB 層(還包括其他措施),對該對象進行優化以便將其用于 SQL Server 7.0 或更高版本。 </p><p>  (2) OleDbConnection - 該對象管理與可通過 OLE DB 訪問的任何數據存儲區的連接。 </p><p>  (3) OdbcCon

68、nection – 該對象管理與通過使用連接字符串或 ODBC 數據源名稱 (DSN) 創建的數據源的連接。 </p><p>  (4) OracleConnection – 該對象管理與 Oracle 數據庫的連接。 </p><p>  雖說SQL Server .NET Framework 數據提供程序、OLE DB .NET Framework 數據提供程序和 ODBC .NET

69、 Framework 數據提供程序都能訪問SQLserver數據庫,但微軟公司推薦使用SQL Server .NET Framework 數據提供程序</p><p>  圖書館管理信息系統使用的就是SQL Server .NET Framework 數據提供程序。以下通過一些例子介紹圖書館管理系統中是如何通過SQL Server .NET Framework 數據提供程序與SQLserver2000數據庫進行交

70、互的。</p><p>  在.net中使用SQL Server .NET Framework 數據提供程序,首先要導入System.Data.SqlClient命名空間。我們舉例說明ADO.NET與SQLserver2000數據庫交互的兩種常見方式:A.直接使用數據命令;B.使用數據集。</p><p>  A. 使用數據命令與數據庫交互</p><p>  要在

71、數據庫中執行操作,應執行 SQL 語句或存儲過程(它包括 SQL 語句)。您使用 SQL 語句或存儲過程讀寫行并執行聚合函數,例如添加或求平均值。您還使用 SQL 語句或存儲過程創建或修改表或列、執行事務等。</p><p>  以下是一個圖書館管理系統中一個驗證登陸的函數</p><p>  Public Function validateLogin(ByVal uid As Strin

72、g, ByVal pwd As String) As 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 A

73、s New SqlCommand</p><p><b>  With cmd</b></p><p>  .Connection = cnmy</p><p>  .CommandType = CommandType.Text</p><p>  .CommandText = "select count(*)

74、 from manager where Man_id=@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

75、><p>  Dim mMan_pwd As New SqlParameter("@Man_pwd", SqlDbType.NVarChar, 12)</p><p>  With cmd.Parameters</p><p>  .Add(mMan_id)</p><p>  .Add(mMan_pwd)</p>

76、<p><b>  End With</b></p><p>  mMan_id.Value = uid</p><p>  mMan_pwd.Value = pwd</p><p><b>  Try</b></p><p>  cnmy.Open()</p><

77、p>  If cmd.ExecuteScalar = 1 Then</p><p>  IsCorrect = True</p><p><b>  End If</b></p><p>  Catch ex As Exception</p><p>  MessageBox.Show("登陸驗證時數據庫

78、發生錯誤" + vbCrLf + ex.Message, _</p><p>  "error", MessageBoxButtons.OK, MessageBoxIcon.Stop)</p><p>  Return False</p><p><b>  Finally</b></p><p

79、>  cnmy.Close()</p><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&

80、gt;  Return IsCorrect</p><p>  End Function</p><p>  現在對這個函數按步驟詳細說明。</p><p>  該例子體現了如何執行sql語句。</p><p>  該實例用到了System.Data.SqlClient命名空間中兩個重要的對象:1.連接對象SqlConnection;2.sq

81、l命令對象SqlCommand。</p><p>  SqlConnection 對象表示與 SQL Server 數據源的一個唯一的會話。對于客戶端/服務器數據庫系統,它相當于到服務器的網絡連接。</p><p><b>  其重要屬性如下表:</b></p><p>  ConnectionString格式如下:</p>&l

82、t;p>  使用sql驗證方式:(server=服務器名稱;database=數據庫名稱;uid=用戶名;pwd=密碼)</p><p>  使用windows集成驗證(server=服務器名稱;database=數據庫名稱;Integrated Security=SSPI)</p><p>  SqlCommand對象表示要對 SQL Server 數據庫執行的一個 T-SQL 語

83、句或存儲過程。其重要屬性如下:</p><p>  SqlCommand 特別提供了以下對 SQL Server 數據庫執行命令的方法:</p><p>  直接使用數據命令的基本步驟是:</p><p>  新建一個SqlConnection對象,設置其ConnectionString屬性。</p><p>  新建一個SqlCommand

84、對象,分別設置其CommandText、CommandTimeout、CommandType、Connection屬性。</p><p>  如果要執行的T-SQL 語句或存儲過程帶有參數,則先要設定SqlCommand對象的Parameters屬性。</p><p>  調用SqlConnection對象的open方法打開連接。</p><p>  執行SqlCo

85、mmand命令。執行的方式及相應的返回結果見上表。</p><p>  調用SqlConnection對象的close方法關閉連接。</p><p>  本例使用ExecuteScalar方法返回一個聚合函數count(*)的值,count(*)返回結果為所查詢到記錄的個數。如果用戶名和密碼均符合的話,則返回一條記錄,此時Count(*)值為1,符合條件,就成功的通過了驗證。</p&

86、gt;<p><b>  B.使用數據集</b></p><p>  使用數據集DataSet與SQLserver數據庫交互請參見3.3.2中關于DataSet的介紹。只是將通用的DataAdapter對象改為專用的SqlClient命名空間中的SqlDataAdapter對象即可,這里就不再重復。</p><p><b>  4 軟件使用說

87、明</b></p><p>  圖書館管理信息系統功能齊全,界面友好,高效的異常處理使程序不會突然中斷。這里主要介紹系統的軟硬件要求及安裝方法。</p><p><b>  4.1環境要求</b></p><p><b>  4.2軟件的安裝</b></p><p><b>

88、  數據服務器的安裝</b></p><p>  1.安裝SQLserver2000</p><p>  2.在SQLserver2000的查詢分析器中,執行我們提供的腳本lib2004.sql</p><p>  3.建立一個用于專門操作“圖書館管理信息系統”數據庫的帳號</p><p><b>  網頁服務器的安裝&

89、lt;/b></p><p>  1.確認已經安裝了IIS</p><p>  2.安裝.Net Framework</p><p>  3.安裝MDAC 2.8</p><p>  4.安裝圖書館管理信息系統(WebForms)</p><p>  5.然后在IIS對應的虛擬目錄中設定sql連接字符串的值<

90、;/p><p><b>  客戶端的安裝</b></p><p>  1.安裝.Net Framework</p><p>  2.安裝MDAC 2.8</p><p>  3.安裝圖書館管理信息系統(管理員版)</p><p>  4.第一次運行程序時會提醒設置數據服務器</p>&l

91、t;p>  數據服務器連接信息以及登陸信息請咨詢管理員</p><p><b>  4.3常見操作</b></p><p>  登陸驗證、借書、還書、綜合查詢等常見的圖書館事務,在軟件中都有體現。詳細的使用方法請參考程序的幫助文檔,這里不再重復。</p><p>  5 程序源代碼經典部分選錄</p><p> 

92、 由于篇幅所限制,只能附上一些比較有代表性的代碼。全部代碼請到http://cast.cumt.edu.cn/zhai/lib2004.rar下載。</p><p><b>  5.1存儲過程</b></p><p>  --備份數據的存儲過程</p><p>  --將數據庫備份到服務器C:\下,文件名為 當前日期+.zjx</p&g

93、t;<p>  ALTER PROCEDURE BACKUPmyData</p><p><b>  AS</b></p><p>  DECLARE @path varchar(15)</p><p>  set @path=convert(varchar,getdate(),112)</p><p>

94、  set @path='C:\'+@path+'.zjx'</p><p>  BACKUP DATABASE lib2004</p><p>  TO Disk = @path</p><p>  WITH FORMAT,</p><p>  NAME = 'Full Backup of lib20

95、04'</p><p><b>  RETURN</b></p><p>  /*檢索某圖書是哪位讀者借去的*/</p><p>  ALTER PROCEDURE Book1IsBorrowByWho</p><p>  @Book_code nvarchar(50)</p><p>&

96、lt;b>  AS</b></p><p>  SELECT Au_id</p><p>  FROM borrow</p><p>  WHERE (book_code = @Book_code) AND (Return_date IS NULL)</p><p><b>  RETURN </b>&

97、lt;/p><p>  /*檢索某圖書是否在館*/</p><p>  /*檢索在館的圖書 只要圖書id不在 借閱記錄沒有歸還的記錄 里 就表示在館*/</p><p>  /*不在館 則返回0</p><p>  在館 返回1 */</p><p>  ALTER PROCEDURE Book1IsInLib</

98、p><p>  @Book_code nvarchar(50)</p><p><b>  AS</b></p><p>  SELECT COUNT(*) as IsInLib</p><p><b>  FROM book</b></p><p>  WHERE Book_c

99、ode = @Book_code AND Book_code IN</p><p>  (SELECT book_code</p><p><b>  FROM Book</b></p><p>  WHERE Book_code NOT IN</p><p>  (SELECT borrow.Book_code<

100、/p><p>  FROM borrow</p><p>  WHERE Return_date IS NULL))</p><p><b>  RETURN </b></p><p>  /* 用于獲取一位讀者的 </p><p><b>  當前借閱書數,</b></p

101、><p><b>  總共借閱書數, </b></p><p><b>  可借書數</b></p><p><b>  最大借閱時間</b></p><p>  輸入參數Au_id */</p><p>  ALTER PROCEDURE Get1AuIn

102、fo</p><p>  @Au_id nvarchar(50), /*1*/</p><p>  @BorrowNo int output,</p><p>  @BorrowNoCurrent int output,</p><p>  @MaxBorrowDays int output,</p><p>  @M

103、axBorrowBooks int output</p><p><b>  AS</b></p><p>  begin transaction</p><p>  SELECT @BorrowNo=COUNT(*)</p><p>  FROM borrow</p><p>  WHERE (

104、Au_id = @Au_id) </p><p>  SELECT @BorrowNoCurrent=COUNT(*) </p><p>  FROM borrow</p><p>  WHERE (Au_id = @Au_id) AND (Return_date IS NULL)</p><p>  SELECT @MaxBorrowDay

105、s=ausort.Au_borrowdays , </p><p>  @MaxBorrowBooks=ausort.Au_borrowbooks </p><p>  FROM ausort INNER JOIN</p><p>  au ON ausort.Au_sort = au.Au_sort</p><p>  WHERE (au.

106、Au_id = @Au_id)</p><p>  commit transaction</p><p><b>  RETURN</b></p><p>  /* 用于獲取一位讀者所有超期的借書列表 Au_id */</p><p>  /*author:翟靖軒 */</p><p>  ALT

107、ER PROCEDURE Select1AuMaxDateBookList</p><p>  @Au_id nvarchar(50) /*1*/</p><p><b>  AS</b></p><p>  SELECT borrow.book_code AS 圖書條碼號, book.Book_name AS 圖書題名, </p>

108、<p>  borrow.Borrow_date AS 借閱日期, borrow.Should_date AS 應還日期</p><p>  FROM book INNER JOIN</p><p>  borrow ON book.Book_code = borrow.book_code</p><p>  WHERE (borrow.Au_id =

109、 @Au_id) AND (borrow.Return_date IS NULL) AND </p><p>  (borrow.Should_date < GETDATE())</p><p>  ORDER BY borrow.Should_date DESC</p><p><b>  RETURN </b></p>

110、<p>  /*返回超期的所有讀者*/</p><p>  /*author:翟靖軒 2004-5-10*/</p><p>  ALTER PROCEDURE SelectMaxDateAuList</p><p><b>  AS</b></p><p>  SELECT borrow.Au_id AS 借

111、書證號, au.Au_name AS 讀者姓名, </p><p>  borrow.book_code AS 圖書條碼號, book.Book_name AS 圖書名稱, </p><p>  borrow.Borrow_date AS 借書日期, borrow.Should_date AS 應歸還日期</p><p>  FROM borrow INNER JO

112、IN</p><p>  au ON borrow.Au_id = au.Au_id INNER JOIN</p><p>  book ON borrow.book_code = book.Book_code</p><p>  WHERE (borrow.Return_date IS NULL) AND (GETDATE() > borrow.Should

113、_date)</p><p>  ORDER BY borrow.Au_id</p><p><b>  RETURN</b></p><p>  /*查詢一個讀者的所有借閱記錄 包括已經借過的已經歸還的書籍</p><p><b>  作者:翟靖軒</b></p><p>

114、;  日期:2004-5-2 */</p><p>  ALTER PROCEDURE SelectAuAllBorrowList</p><p>  @Au_id nvarchar(50)</p><p><b>  AS</b></p><p>  SELECT book.Book_code AS 條碼號, book

115、.Book_name AS 圖書題名, </p><p>  borrow.Borrow_date AS 借閱日期, borrow.Return_date AS 歸還日期, </p><p>  borrow.Should_date AS 應歸還日期, book.Book_isbn AS ISBN號, </p><p>  book.Book_pub AS 出版社,

116、 book.Book_sort AS 圖書分類, </p><p>  book.Book_author AS 圖書作者</p><p>  FROM book LEFT OUTER JOIN</p><p>  borrow ON book.Book_code = borrow.book_code</p><p>  WHERE (borr

溫馨提示

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

評論

0/150

提交評論