企業(yè)人事管理系統(tǒng)畢業(yè)論文設計_第1頁
已閱讀1頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設計(論文)</b></p><p><b>  企業(yè)人事管理系統(tǒng)的</b></p><p><b>  設計與實現</b></p><p><b>  摘 要</b></p><p>  當今,互聯網空前發(fā)展,給人

2、們的工作和生活帶來了極大的便利和效率的提高,電子化,信息化已經成為提高工作效率,節(jié)約運營成本的首選??紤]到當前大量企業(yè)的人事管理尚處于手工作業(yè)階段,不但效率低,還常常因為管理的不慎而出現問題。因此根據部分企業(yè)提供的需求,設計此企業(yè)人事管理系統(tǒng),以幫助企業(yè)達到人事管理辦公自動化、節(jié)約管理成本、提高企業(yè)工作效率的目的。</p><p>  本企業(yè)人事管理系統(tǒng)采用C/S結構,主要對企業(yè)員工的信息以及相關的工作流程進行集

3、中的管理,方便企業(yè)建立一個完善的、強大的員工信息數據庫。它以.NET2005和SQL 2005數據庫作為開發(fā)平臺。使用C# 設計操作控件和編寫操作程序,完成數據輸入、修改、存儲、調用查詢等功能;并使用SQL 2005數據庫形成數據表,進行數據存儲。</p><p>  本文詳細介紹了企業(yè)人事管理系統(tǒng)的功能需求,系統(tǒng)設計和具體實現。</p><p>  關鍵詞  企業(yè)人事管理系統(tǒng);

4、C/S;員工信息數據庫</p><p>  The Design and Implementation of Enterprise Personnel Management System Based on C/S</p><p><b>  Abstract</b></p><p>  Nowadays, the unprecedented d

5、evelopment of Internet has brought us great convenience and efficiency. Informatization and electronization become the preference of saving operation cost and improving work efficiency. Many enterprises still depend on l

6、abor to manage theirs personnel which should be named as inefficient and unreliable. Thus, this PMS(Personnel Management System)is designed  to make the personnel administration more scientific, normative and effici

7、ent.</p><p>  This system adopts the structure mode of client/server(C/S), Windows XP as the operation system,SQL 2005 as the background database, and Microsoft Visual Studio.NET 2005 as the developing tool.

8、 It can help enterprises to establish a perfect, strong staff information database, which facilitates the centralized management of staff information . Use C# to design and operate the controls and writing, to finishe th

9、e functions of entering data, store and query; use sql 2005 database tables to maintain</p><p>  The thesis explains the course design, system design and implementation of PMS.</p><p>  Key word

10、s: Personnel Management System; C/S; Employee Information Database</p><p>  企業(yè)人事管理系統(tǒng)2</p><p><b>  1前言2</b></p><p>  1.1 目的與意義2</p><p>  1.2 人事管理系統(tǒng)發(fā)展趨勢3

11、</p><p>  1.2.1世界趨勢3</p><p>  1.2.2技術革新3</p><p>  1.3 系統(tǒng)調研4</p><p>  1.3.1 社會可行性分析4</p><p>  1.3.2 技術可行性分析4</p><p>  1.3.3 經濟可行性分析5</

12、p><p>  1.3.4 管理可行性分析5</p><p>  1.4 研究內容5</p><p>  2開發(fā)工具及其語言特點5</p><p>  2.1 Visual Studio.NET主要特點如下5</p><p>  2.2.1簡潔的語法7</p><p>  2.2.2精心地

13、面向對象設計7</p><p>  2.2.3與Web的緊密結合8</p><p>  2.2.4完整的安全性與錯誤處理9</p><p>  2.2.5版本處理技術9</p><p>  2.2.6靈活性和兼容性10</p><p>  3.1SQL2005主要特點10</p><p&

14、gt;  3.1.1.NET框架10</p><p>  3.1.2XML技術11</p><p>  3.1.3ADO.NET2.0版本11</p><p>  3.1.4增強的安全性11</p><p>  3.1.5Transact-SQL的增強性能11</p><p>  3.1.6SQL服務中介1

15、1</p><p>  3.1.7通告服務11</p><p>  3.1.8Web服務12</p><p>  3.1.9報表服務12</p><p>  3.1.10全文搜索功能的增強12</p><p>  3.2C#與ADO.NET12</p><p>  3.2.1 

16、; C#中的數據庫訪問12</p><p>  3.2.2 數據綁定23</p><p>  3.3 SQL語言24</p><p>  3.3.1表定義語句24</p><p>  3.3.2視圖定義語句24</p><p>  3.3.3索引定義語句24</p><p>  3

17、.3.4數據操縱語句24</p><p>  3.3.5INSERT語句25</p><p>  3.3.6UPDATE語句25</p><p>  3.3.7DELETE語句25</p><p>  3.3.8查詢語句25</p><p>  3.3.9條件查詢25</p><p>

18、;  3.3.10查詢排序26</p><p>  3.3.11統(tǒng)計查詢26</p><p>  3.3.12Group by子句26</p><p>  3.3.13Distinct關鍵詞26</p><p>  3.3.14Top關鍵詞26</p><p>  3.3.15多表查詢27</p>

19、;<p>  3.3.16多重查詢27</p><p>  3.3.17EXISTS關鍵詞27</p><p>  4系統(tǒng)需求分析27</p><p>  4.1系統(tǒng)流程圖如下27</p><p><b>  5 致謝49</b></p><p>  附錄F 各模塊實現的

20、主要源代碼50</p><p>  F1.1登錄模塊的設計與實現的主要代碼50</p><p><b>  }51</b></p><p>  F1.2登陸實體類:51</p><p>  F1.3 員工管理模塊的設計與實現的主要代碼52</p><p>  F1.3.1員工管理實現的

21、主要代碼:52</p><p>  F1.3.2 部門管理實現主要代碼:53</p><p><b>  }55</b></p><p>  F1.3.3工資管理主要代碼:55</p><p><b>  }59</b></p><p>  F1.3.4考勤信息設

22、計與實現主要代碼:59</p><p><b>  }62</b></p><p>  F1.4 數據訪問類:62</p><p><b>  }65</b></p><p>  F1.5生日提醒主要代碼:65</p><p>  F1.6啟動第三方EXE文件操作類

23、:65</p><p><b>  }66</b></p><p><b>  企業(yè)人事管理系統(tǒng)</b></p><p><b>  1前言</b></p><p><b>  1.1 目的與意義</b></p><p>  人

24、的管理是管理工作的核心。員工代表一個企業(yè)的形象,因而人事管理機制的好壞,影響一個企業(yè)的成敗。 員工的檔案管理是企業(yè)人事管理的基礎,在企業(yè)員工普遍流失的今天,一個準確而及時的人事管理系統(tǒng),有利于人事部門對員工流動進行分析、編制,為企業(yè)所需人員提供了保障。</p><p>  人力資源部那些重復的,事務性的工作交給HRP(Human Resource Planning,人力資源管理系統(tǒng))來解決,可以省去用戶以

25、往人力資源管理工作的繁瑣、枯燥;用領先的人力資源管理理念,把人力資源管理的作業(yè)流程控制和戰(zhàn)略規(guī)劃設計巧妙地集合于一體;系統(tǒng)重點涉及到人力資源管理工作中的薪資、考勤、績效、調動、基本信息、用戶管理以及用戶切換等方面,并有綜合的系統(tǒng)安全設置、報表綜合管理模塊??梢院芎玫貫橛脩舻娜肆Y源管理部門在對員工的成本管理、知識管理、績效管理等綜合管理給予幫助。以每個月中所發(fā)工資為例,其中包括考勤、人事信息變動、獎懲、遲到和曠工對本月的薪資計算都有影響

26、,為了及時的計算發(fā)放工資往往要提前一個星期花費大量時間,加班加點才能及時完成,而這樣做無論從工作效率還是準確度方面,都不允許,而且還浪費大量的人力財力。如果改用HRP管理做到高效、高精度,還可以減少管理時帶來的一些繁瑣的工作,節(jié)約管理帶來的開支。</p><p>  1.2 人事管理系統(tǒng)發(fā)展趨勢</p><p><b>  1.2.1趨勢</b></p>

27、<p>  人力資源管理系統(tǒng)主導21世紀,無論是發(fā)達國家還是發(fā)展中國家,對人力資源的戰(zhàn)略性意義都有了深刻的認識,并開始付諸行動。世界公認,21世紀將是人力資源的世紀;人力資源問題將主導整個21世紀甚至更為遙遠,這種狀況的變化起因于競爭壓力。目前,世界經濟趨向全球化。世界經濟的全球化過程和國家的開放過程,要求組織的管理部門降低管理成本以減少競爭壓力和增強競爭能力。對于不同的組織,人力資源成本在總成本中的比例是不一樣的。<

28、;/p><p><b>  1.2.2革新</b></p><p>  無論是現在還是將來,工業(yè)的發(fā)展越來越多地取決于科學和技術、知識與技能。高新科技產業(yè)更是如此。這不僅要求員工尤其是技術人員掌握新的科學知識和技術能力,而且更重要的在于要求員工深入而快捷地掌握和應用這些知識和技能。這就導致了兩個問題。第一,隨著這種技術革新的發(fā)展和知識更新速度的加快,人們有更多的職業(yè)選擇機

29、會。第二,伴隨著這種發(fā)展以及職業(yè)選擇機會的增多,人力資源管理活動和頻繁程度加?。欢疫@種活動對科學技術的要求與它的反應程度也更高了,進而提高了人力資源成本。</p><p><b>  1.3 系統(tǒng)調研</b></p><p>  1.3.1 社會可行性分析</p><p>  隨著計算機的發(fā)展與普及,以及互聯網技術的擴展,日常勞資人事管理必將

30、實現無紙化辦公,并且加入到公司內部的Intranet或者是Internet上去,實現數據的共享,這樣有利于勞資人事信息在單位內部的查詢,提高了數據資源的利用,并且能及時的得到更新,不需要象過去那樣浪費大量的人力物力去進行抄寫,提高了工作的效率</p><p>  1.3.2 技術可行性分析</p><p>  Visual Studio.NET提供了一個統(tǒng)一的、緊密集成的可視化編程環(huán)境,簡

31、化了開發(fā)應用程序的過程,縮短了實用方法的時間。利用Visual Studio.NET,可以非常輕松地創(chuàng)建具有自動伸縮能力的可靠的應用程序和組件。而且微軟的優(yōu)秀成果c#語言保持了c/c++所特有的強大功能和控制能力。與c++十分相似的模型和語法,具有與COM+服務完全的交互性和完全支持能力,能夠輕松地遷移現有的代碼。數據庫方面SQL2005已經可以滿足中小型企業(yè)的數據要求,甚至有些大型企業(yè)都可以達到要求。如今進算計普及程度日益推廣,計算機

32、配置日新月異,能承載此系統(tǒng)的機器就如辦公的機器都可以達到要求。所以說本系統(tǒng)具有技術可行性。</p><p>  1.3.3 經濟可行性分析</p><p>  采用傳統(tǒng)的手工輸入方法,不僅工作繁瑣而且需要人力輸入多,記錄容易出錯,那樣產生了成本高,效果差的弊病,對于一個企業(yè)的資料庫建立是十分困難和麻煩的。而采用這種系統(tǒng)所發(fā)費的成本,精力都遠遠低于手工,并且實用十分方便,更新也簡易,每個部門

33、只需一個人統(tǒng)一管理,對企業(yè)實現辦公無紙化能起到很大的作用。所以此系統(tǒng)經濟可行性也具備了。</p><p>  1.3.4 管理可行性分析</p><p>  本系統(tǒng)采用了系統(tǒng)數據備份、恢復的功能,而且界面層次分明,一目了然,加上設計方面加入了人性化元素。管理此系統(tǒng)并不難,易學易會。</p><p><b>  1.4 研究內容</b></

34、p><p>  本論文共分為5章。第1章緒論,介紹了本課題的應用目的和意義、人事管理系統(tǒng)、可行性分析和研究內容。第2章介紹了開發(fā)工具及其特點、數據庫技術。第3章主要介紹了系統(tǒng)的設計與分析,包括總體設計、數據庫設計、詳細設計等。第4章主要介紹系統(tǒng)實現,即系統(tǒng)各種模塊的功能實現。第5章為本課題完成成果和發(fā)展期望的總結。</p><p>  本論文主要利用C#可視化技術及SQL數據庫開發(fā)技術,對員工

35、管理與考勤管理系統(tǒng)進行系統(tǒng)化、細致化和完善化的分析研究。</p><p>  2開發(fā)工具及其語言特點</p><p>  2.1 Visual Studio.NET主要特點如下2.1.1提供加速開發(fā)過程的高效工具</p><p>  Visual Studio.NET提供了一個統(tǒng)一的、緊密集成的可視化編程環(huán)境,以幫助用戶簡化開發(fā)網絡應用程序的過程,縮短學習使用方法

36、的時間。它提供了一種新的語言——C#。通過共享的HTML、XML和樣式單編輯器,用戶可以輕松地借助包括C#在內的任何一種Visual Studio語言來開發(fā)網絡應用程序。2.1.2 提供對各種網絡應用程序的快速設計能力</p><p>  借助Web Form,用戶可以用他們在開發(fā)基于窗體的桌面應用程序時所使用的技巧來創(chuàng)建跨平臺、跨瀏覽器的網絡應用程序。2.1.3 利用XML和Web Service來簡化分布

37、式計算</p><p>  Web Service借助標準的Intemet協(xié)議在網絡上調用商務邏輯。HTTP被作為Web Service傳輸的基礎協(xié)議,該協(xié)議使得對功能的請求能夠穿越各種團體所使用的防火墻。XML被用來對上述功能請求的參數進行格式統(tǒng)一,從而使這些請求能夠使用于所有的軟件和硬件。這樣使得對Web Service的訪問可以通過任何一種語言、使用任何一種組件模型在任何一種操作系統(tǒng)上實現。2.1.4快速

38、構建中間層商務組件</p><p>  Visual Studio的一個核心目標就是要為基于服務器的應用程序提供應用程序快速部署工具。利用Visual Studio.NET創(chuàng)建的組件將為您的商務運作提供足夠的功能和伸縮性。2.1.5構建可靠的可伸縮解決方案</p><p>  利用Visual Studio.NET,用戶可以非常輕松地創(chuàng)建具有自動伸縮能力的可靠的應用程序和組件。2.2

39、C#技術概述</p><p>  C#在帶來對應用程序的快速開發(fā)能力的同時,并沒有犧牲C與C++程序員所關心的各種特性。它忠實地繼承了C和C++的優(yōu)點。如果你對C或C++有所了解,你會發(fā)現它是那樣的熟悉。即使你是一位新手,C#也不會給你帶來任何其它的麻煩,快速應用程序開發(fā)(Rapid Application Development,RAD)的思想與簡潔的語法將會使你迅速成為一名熟練的開發(fā)人員。</p>

40、<p>  C#是專門為.NET應用而開發(fā)出的語言。這從根本上保證了C#與.NET框架的完美結合。在.NET運行庫的支持下,.NET框架的各種優(yōu)點在C#中表現得淋漓盡致。C#的一些突出的特點</p><p><b>  ●簡潔的語法</b></p><p>  ●精心地面向對象設計</p><p>  ●與Web的緊密結合<

41、/p><p>  ●完整的安全性與錯誤處理</p><p><b>  ●版本處理技術</b></p><p><b>  ●靈活性與兼容性</b></p><p>  2.2.1簡潔的語法</p><p>  在缺省的情況下,C#的代碼在.NET框架提供的“可操縱”環(huán)境下運行,

42、不允許直接地內存操作。它所帶來的最大的特色是沒有了指針。與此相關的是,那些在C++中被瘋狂使用的操作符(例如:“::”、“->”和“.,”)已經不再出現。C#只支持一個“.”,對于我們來說,現在需要理解的一切僅僅是名字的嵌套而已。</p><p>  C#用真正的關鍵字換掉了那些把活動模板庫(Active Template Library,ALT)和COM搞得亂糟糟的偽關鍵字,如OLE_COLOR、BOOL

43、、VARIANT_BOOL、DISPID_XXXXX等等。每種C#操作符在.NET類庫中都有了新名字。</p><p>  語法中的冗余是C++中的常見的問題,比如"const"和"#define"、各種各樣的字符類型等等。C#對此進行了簡化,只保留了常見的形式,而別的冗余形式從它的語法結構中被清除了出去。</p><p>  2.2.2精心地面向對

44、象設計</p><p>  從Smalltalk開始,面向對象的話題就始終纏繞著任何一種現代程序設計語言。的確,C#具有面向對象的語言所應有的一切特性:封裝、繼承與多態(tài)性,這并不出奇。然而,通過精心地面向對象設計,從高級商業(yè)對象到系統(tǒng)級應用,C#建造廣泛組件的絕對選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個對象。C#提供了一個叫做裝箱(boxing)與拆箱(unboxing)的機制來完成這種操作,而不給使用者

45、帶來麻煩,這在以后的章節(jié)中將進行更為詳細的介紹。</p><p>  C#只允許單繼承,即一個類不會有多個基類,從而避免了類型定義的混亂。在后面的學習中你很快會發(fā)現,C#中沒有了全局函數,沒有了全局變量,也沒有了全局常數。一切的一切,都必須封裝在一個類之中。你的代碼將具有更好的可讀性,并且減少了發(fā)生命名沖突的可能。整個C#的類模型是建立在.NET虛擬對象系統(tǒng)(Visual Object System,VOS)的基

46、礎之上,其對象模型是.NET基礎架構的一部分,而不再是其本身的組成部分。在下面將會談到,這樣做的另一個好處是兼容性。</p><p>  借助于從VB中得來的豐富的RAD經驗,C#具備了良好的開發(fā)環(huán)境。結合自身強大的面向對象功能,C#使得開發(fā)人員的生產效率得到極大的提高。對于公司而言,軟件開發(fā)周期的縮短將能使它們更好應付網絡經濟的競爭。在功能與效率的杠桿上人們終于找到了支點。</p><p&g

47、t;  2.2.3與Web的緊密結合</p><p>  .NET中新的應用程序開發(fā)模型意味著越來越多的解決方案需要與Web標準相統(tǒng)一,例如超文本標記語言(Hypertext Markup Language,HTML)和XML。由于歷史的原因,現存的一些開發(fā)工具不能與Web緊密地結合。SOAP的使用使得C#克服了這一缺陷,大規(guī)模深層次的分布式開發(fā)從此成為可能。</p><p>  由于有了

48、Web服務框架的幫助,對程序員來說,網絡服務看起來就象是C#的本地對象。程序員們能夠利用他們已有的面向對象的知識與技巧開發(fā)Web服務。僅需要使用簡單的C#語言結構,C#組件將能夠方便地為Web服務,并允許它們通過Internet被運行在任何操作系統(tǒng)上的任何語言所調用。舉個例子,XML已經成為網絡中數據結構傳遞的標準,為了提高效率,C#允許直接將XML數據映射成為結構。這樣就可以有效的處理各種數據。</p><p>

49、;  2.2.4完整的安全性與錯誤處理</p><p>  語言的安全性與錯誤處理能力,是衡量一種語言是否優(yōu)秀的重要依據。任何人都會犯錯誤,即使是最熟練的程序員也不例外:忘記變量的初始化,對不屬于自己管理范圍的內存空間進行修改,這些錯誤常常產生難以預見的后果。一旦這樣的軟件被投入使用,尋找與改正這些簡單錯誤的代價將會是讓人無法承受的。C#的先進設計思想可以消除軟件開發(fā)中的許多常見錯誤,并提供了包括類型安全在內的完

50、整的安全性能。為了減少開發(fā)中的錯誤,C#會幫助開發(fā)者通過更少的代碼完成相同的功能,這不但減輕了編程人員的工作量,同時更有效地避免了錯誤的發(fā)生。</p><p>  .NET運行庫提供了代碼訪問安全特性,它允許管理員和用戶根據代碼的ID來配置安全等級。在缺省情況下,從Internet和Intranet下載的代碼都不允許訪問任何本地文件和資源。比方說,一個在網絡上的共享目錄中運行的程序,如果它要訪問本地的一些資源,那

51、么異常將被觸發(fā),它將會無情地被異常扔出去,若拷貝到本地硬盤上運行則一切正常。內存管理中的垃圾收集機制減輕了開發(fā)人員對內存管理的負擔。.NET平臺提供的垃圾收集器(Garbage Collection,GC)將負責資源的釋放與對象撤銷時的內存清理工作。</p><p>  變量類型是安全的。C#中不能使用未初始化的變量,對象的成員變量由編譯器負責將其置為零,當局部變量未經初始化而被使用時,編譯器將做出提醒;C#不支

52、持不安全的指向,不能將整數指向引用類型,例如對象,當進行下行指向時,C#將自動驗證指向的有效性;C#中提供了邊界檢查與溢出檢查功能。</p><p>  2.2.5版本處理技術</p><p>  C#提供內置的版本支持來減少開發(fā)費用,使用C#將會使開發(fā)人員更加輕易地開發(fā)和維護各種商業(yè)用戶。升級軟件系統(tǒng)中的組件(模塊)是一件容易產生錯誤的工作。在代碼修改過程中可能對現存的軟件產生影響,很有

53、可能導致程序的崩潰。為了幫助開發(fā)人員處理這些問題,C#在語言中內置了版本控制功能。例如:函數重載必須被顯式聲明,而不會象在C++或java中經常發(fā)生的那樣不經意地被進行,這可以防止代碼級錯誤和保留版本化的特性。另一個相關的特性是接口和接口繼承的支持。這些特性可以保證復雜的軟件可以被方便地開發(fā)和升級。</p><p>  2.2.6靈活性和兼容性</p><p>  在簡化語法的同時,C#并

54、沒有失去靈活性。盡管它不是一種無限制語言,比如:它不能用來開發(fā)硬件驅動程序,在默認的狀態(tài)下沒有指針等等,但是,在學習過程中你將發(fā)現,它仍然是那樣的靈巧。</p><p>  如果需要,C#允許你將某些類或者類的某些方法聲明為非安全的。這樣一來,你將能夠使用指針、結構和靜態(tài)數組,并且調用這些非安全代碼不會帶來任何其它的問題。此外,它還提供了一個另外的東西(這樣的稱呼多少有些不敬)來模擬指針的功能--delegate

55、s,代表。再舉一個例子:C#不支持類的多繼承,但是通過對接口的繼承,你將獲得這一功能。</p><p><b>  2.2.7安全性</b></p><p>  正是由于其靈活性,C#允許與C風格的需要傳遞指針型參數的API進行交互操作,DLL的任何入口點都可以在程序中進行訪問。C#遵守.NET公用語言規(guī)范(Common Language Specification,

56、CLS),從而保證了C#組件與其它語言組件間的互操作性。元數據(Metadata)概念的引入既保證了兼容性,又實現了類型安全。</p><p>  3.1SQL2005主要特點</p><p>  3.1.1.NET框架</p><p>  使用SQL Server2005,開發(fā)人員通過使用相似的語言,例如微軟的VisualC#.NET和微軟的VisualBasic

57、,將能夠創(chuàng)立數據庫對象。開發(fā)人員還將能夠建立兩個新的對象——用戶定義的類和集合。 </p><p>  3.1.2XML技術 </p><p>  在使用本地網絡和互聯網的情況下,在不同應用軟件之間散步數據的時候,可擴展標記語言(XML)是一個重要的標準。SQL Server2005將會自身支持存儲和查詢可擴展標記語言文件。 </p><p>  3.1.3ADO.

58、NET2.0版本 </p><p>  從對SQL類的新的支持,到多活動結果集(MARS),SQL Server2005中的ADO.NET將推動數據集的存取和操縱,實現更大的可升級性和靈活性。 </p><p>  3.1.4增強的安全性 </p><p>  SQL Server2005中的新安全模式將用戶和對象分開,提供fine-grainaccess存取、并允

59、許對數據存取進行更大的控制。另外,所有系統(tǒng)表格將作為視圖得到實施,對數據庫系統(tǒng)對象進行了更大程度的控制。 </p><p>  3.1.5Transact-SQL的增強性能 </p><p>  SQL Server2005為開發(fā)可升級的數據庫應用軟件,提供了新的語言功能。這些增強的性能包括處理錯誤、遞歸查詢功能、關系運算符PIVOT,APPLY,ROW_NUMBER和其他數據列排行功能,

60、等等。 </p><p>  3.1.6SQL服務中介 </p><p>  SQL服務中介將為大型、營業(yè)范圍內的應用軟件,提供一個分布式的、異步應用框架。 </p><p>  3.1.7通告服務 </p><p>  通告服務使得業(yè)務可以建立豐富的通知應用軟件,向任何設備,提供個人化的和及時的信息,例如股市警報、新聞訂閱、包裹遞送警報、航

61、空公司票價等。在SQL Server2005中,通告服務和其他技術更加緊密地融合在了一起,這些技術包括分析服務、SQLServerManagementStudio。 </p><p>  3.1.8Web服務 </p><p>  使用SQL Server2005,開發(fā)人員將能夠在數據庫層開發(fā)Web服務,將SQL Server當作一個超文本傳輸協(xié)議(HTTP)偵聽器,并且為網絡服務中心應用

62、軟件提供一個新型的數據存取功能。 </p><p>  3.1.9報表服務 </p><p>  利用SQL Server2005,報表服務可以提供報表控制,可以通過VisualStudio2005發(fā)行。 </p><p>  3.1.10全文搜索功能的增強 </p><p>  SQL Server2005將支持豐富的全文應用軟件。服務器的

63、編目功能將得到增強,對編目的對象提供更大的靈活性。查詢性能和可升級性將大幅得到改進,同時新的管理工具將為有關全文功能的運行,提供更深入的了解。</p><p>  3.2C#與ADO.NET</p><p>  3.2.1  C#中的數據庫訪問</p><p>  用.NET框架編寫的(當然也包括用C#編寫的應用程序)應用程序需要訪問數據庫時,將使用ADO

64、.NET來實現數據庫訪問。數據綁定是一種非常有用的訪問數據庫的方法,能夠減少需要編寫的代碼量。很多簡單任務可以通過純粹聲明式代碼來完成。</p><p>  <1> ADO.NET</p><p>  ADO.NET是微軟的數據訪問框架的最新產物,它是.NET框架的一部分。在ADO.NET之前,程序員在ASP(Active Server Pages)或Visual Basic中

65、使用ADO(AtiveX Data Objects),這是一組COM(Component Object Model,組件對象模型)組件,它通過一個易于使用的封裝類提供對底層數據訪問代碼的訪問。雖然ADO大大簡化了數據庫訪問,但更高級的程序員(特別是C++程序員)通常更喜歡使用更直接、更快的代碼,如OLE DB(Object Linking and Embedding for Databases)代碼庫。</p><p

66、>  ADO.NET比ADO的功能更強大。它是在.NET代碼中訪問數據庫的最好工具。</p><p>  .NET框架中的ADO.NET類型(在System.Data命名空間及其子空間下的所有類型)包括那些為訪問SQL Server、OLE DB、ODBC和Oracle數據庫而優(yōu)化的類型。它們都是基于通用類的,因此使用ADO.NET訪問不同的DBMS是相似的。</p><p>  A

67、DO.NET類型實現兩個主要的功能。</p><p>  ●    數據訪問:用于訪問數據庫中數據和操作數據庫的類型;</p><p>  ●    數據表示:用于包含數據庫數據(如數據表)的類型。</p><p>  這兩種類型之間聯系密切,在數據庫開發(fā)中兩種類型都會用到。嚴格地說,可以只用一種數據庫訪問

68、類型。然而,如果使用數據訪問類型來填充數據表示類型將節(jié)省大量工作。 </p><p>  ADO.NET包含7個重要的基類,其中4個是數據訪問類:</p><p>  ● DbConnection;</p><p>  ● DbCommand;</p><p>  ● DbDataReader;</p><p&g

69、t;  ● DbDataAdapter。</p><p>  其他3個類是數據表示類:</p><p>  ● DataTable;</p><p>  ● DataRelation;</p><p>  ● DataSet。</p><p>  DataTable類使用了其他一些重要的類:DataColum

70、、Constraint和DataRow,本節(jié)也將介紹它們。</p><p>  1.DbConnection</p><p>  DbConnection類提供與數據庫的連接。創(chuàng)建DbConnection對象時,應提供與DBMS通信所需的所有信息,如數據庫的位置、用于認證的用戶名和密碼以及要訪問的DBMS中的數據庫。</p><p>  所有其他ADO.NET數據訪

71、問類都依靠DbConnection與數據庫進行通信。DbConnection類的扮演角色如圖2.1所示。</p><p>  圖3.2.1  DbConnection類</p><p>  在從DbConnection派生而來的類中,到數據庫的連接都是由連接字符串定義的,該字符串存儲在屬性DbConnection.ConnectionString中。</p><

72、;p>  數據庫連接應只在傳輸數據時才打開,因此創(chuàng)建DbConnection實例時并不自動連接到數據庫。DbConnection類定義了Open()方法和Close()方法,用于控制連接何時可用。很多其他的ADO.NET類也能控制連接狀態(tài),例如,有些類在完成操作后關閉它們使用的連接。</p><p>  DbConnection對象還能參與事務??捎肈bConnection.BeginTransaction

73、()方法開始事務,或使用DbConnection.EnlistTransaction()作為已有事務的一部分執(zhí)行操作。</p><p>  訪問SQL Server或SQL Server速成版中的數據時,使用SqlConnection,該類是DbConnection的子類。一般來說,DbConnection和SqlConnection及其他子類都稱為連接類。</p><p>  2.DbC

74、ommand</p><p>  DbCommand類提供與數據庫交互的主要方法??梢杂肈bCommand對象來執(zhí)行SQL語句、運行存儲過程等。DbCommand及其派生類稱為命令類。</p><p>  大部分時候并不直接使用DbCommand,而是用封裝了DbCommand的其他對象。但有時候需要對數據庫通信進行更多的控制,這時就可以使用DbCommand對象。</p>

75、<p>  DbCommand對象的扮演角色如圖2.2所示。</p><p>  圖3.2.2  DbCommand類</p><p>  DbCommand中最重要的屬性是DbCommand.CommandText。要執(zhí)行SQL語句,就要將語句文本放在這個屬性中??梢杂肈bCommand.CommandType來指定要執(zhí)行的語句類型,使用DbCommand.Conne

76、ction和DbCommand.Tranction來訪問底層的連接或事務。</p><p>  要注意,DbCommand對象可能有參數化的命令字符串,命令中的參數來自類型為DbCommand. Parameters集合的屬性。這與直接在命令字符串中輸入參數相比有很多優(yōu)點,在本書后面部分將會看到。</p><p>  要使用DbCommand對象執(zhí)行命令,有三種選擇,這取決于要執(zhí)行的命令是

77、什么。有些命令不返回結果,這種情況下可以用DbCommand.ExecuteNonQuery()方法;有些命令返回一個結果,這時可用DbCommand.ExecuteScalar()方法;最后,有很多命令返回多行數據,這時可用DbCommand. ExecuteReader()方法,它將返回一個DbDataReader對象(下一小節(jié)將解釋)。</p><p>  SQL Server的DbCommand版本名為S

78、qlCommand。它有自己的一些特殊方法,如SqlCommand. ExecuteXmlReader()方法,它直接以XML格式返回結果。</p><p>  3.DbDataReader</p><p>  使用DbDataReader類可以從結果集中讀取數據,如從執(zhí)行存儲在命令對象中的命令生成的結果集中讀取數據。該類經過高度優(yōu)化,可以很快地訪問數據庫中的數據。然而,這種優(yōu)化也有些副作

79、用,例如,只能以串行方式一次讀取一行數據。不能讀完兩行后再返回去讀取第一行。通常,可以用DbDataReader對象(更確切地說,是數據閱讀器的子類對象)來提取要使用的行數據,并將其存儲在其他對象中。例如,可以讀取一個結果集中的每行,將其存儲到在自定義集合或泛型列表對象中的自定義類中。</p><p>  與命令對象一樣,很多時候數據閱讀器對象是由ADO.NET命名空間下的其他類使用的,用戶不必直接使用它們。&l

80、t;/p><p>  圖3.2.3說明了如何在數據庫應用程序中使用數據閱讀器。</p><p>  要使用數據閱讀器對象,首先必須調用DbDataReader.Read()方法選擇結果集中的第一行??刹粩嗾{用該方法來移動數據閱讀器,使數據閱讀器像結果集中的游標一樣總是指向一行。獲取一行時,Read()方法返回true;否則返回false—如當所有行都已經讀完時。也可以用DbDataReader

81、. HasRows屬性來判斷結果集中是否還有其他行。</p><p>  圖3.2.4  DbDataReader類</p><p>  很多屬性和方法可用于檢查當前選中的行。DbDataReader.FieldCount查看當前行包含多少列,并用DbDataReader的重載索引器訪問各列。如果知道要訪問的列名,可用基于字符串的索引器來獲得列值,也可以使用基于整數的索引器通過位

82、置獲得列。在這兩種情況下,這種方法都將返回object值,可將其轉化為其他類型的數據。</p><p>  也可以使用DbDataReader提供的多個方法直接獲得類型化數據,如GetString()和GetInt32()分別將指定列以string和int值返回,列通過其索引選擇。要使用這些方法獲得值類型,必須首先使用DbDataReader.IsDBNull檢查空值;否則,空值將引發(fā)異常。檢查空值是必須的,因為

83、不管什么數據庫類型都可以為空。這與.NET中的值類型不同,可為空的值類型(如int)在這種上下文環(huán)境中是不受支持的。</p><p>  DbDataReader也能夠獲得關于它包含的數據的元信息—使用DbDataReader.GetSchema Table()方法,這樣就可以知道列的名稱、數據類型和其他信息,如列是否包含空值。</p><p>  與前面的其他類一樣,也有專門用于SQL

84、Server的數據閱讀器類,這就是SqlDataReader,本書將使用該類。該類繼承DbDataReader,提供將數據讀取為本地SQL類型的方法,這樣就能夠避免空類型的問題。這些類型包含在System.Data.Sqltypes命名空間中,是可為空的;如SqlDouble和SqlInt32。雖然這些類型也可以像標準的值類型那樣進行操作,但它們實際上是引用類型。</p><p>  4.DbDataAdapte

85、r</p><p>  在ADO.NET的核心數據訪問類中,最后一個是DbDataAdapter類。它比前面介紹過的類型要復雜得多,設計該類的目的只有一個:減少存儲在數據集對象中的數據與數據庫進行數據交換時的干擾。與前面的類一樣,DbDataAdapter類也有很多派生類,它們統(tǒng)稱為數據適配器類。</p><p>  稍后將詳細解釋什么是數據集對象,簡單地說,它們是能夠以.NET對象的形來

86、表示數據庫中數據的對象。數據集對象可以包含整個表或多個表的數據。數據適配器既可以將數據庫中的數據傳輸給包含在數據集中的表,也可以將數據集中的數據傳輸到數據庫中。</p><p>  這個功能由命令對象和數據閱讀器對象執(zhí)行,因此大部分時候用戶不必考慮它。然而,DbDataAdapter最重要的(也是最有用的)特性之一是,它用于傳輸數據的命令對象被暴露出來,因此可以根據需要對它們進行定制。</p>&l

87、t;p>  圖2.4說明了DbDataAdapter類的工作原理,包括它包含的命令對象。</p><p>  圖3.2.4  DbDataAdapter類</p><p>  數據適配器使用的4個命令對象存儲在4個屬性中:SelectCommand(用于查詢數據)、InsertCommand(用于添加數據)、UpdateCommand(用于編輯數據)和DeleteComma

88、nd(用于刪除數據)。要使用適配器,并不一定全部用到這4個屬性,例如,可以只用適配器來查詢數據。另外,.NET框架可以根據其他命令的值推斷出命令的值,例如,可以根據查詢命令來生成更新、插入和刪除命令。然而,這種自動生成的命令的效率可能不如手工提供的高。本書稍后還會討論這個問題。</p><p>  數據適配器中最常用的兩個方法是DbDataAdapter.Fill()和DbDataAdapter.Update()

89、。Fill()方法從數據庫中獲取數據;Update()方法更新數據庫中的數據。這兩個方法都可以用于數據集或單個數據表。另外,可以使用DbDataAdapter.FillSchema()獲取架構數據。</p><p>  SQL Server中的DbDataAdapter版本是Sql DbDataAdapter。</p><p>  5.DataTable</p><p&

90、gt;  DataTable是ADO.NET提供的第一個數據表示類。與數據訪問類不同,數據表示類沒有專門用于特定數據庫管理系統(tǒng)(如SQL Server)的子類,它們獨立于平臺。實際上,如果需要的話,數據表示類完全可以獨立于數據庫使用,它們只是存儲數據的一種方便的方法。</p><p>  DataTable類用于存儲(讀者可能對此感到不解)數據表。在繼續(xù)討論這個類之前需要澄清一件事情:以DataTable對象存儲

91、的表不一定要映射到數據庫中的表。DataTable可能包含表中數據的一個子集,該子集可能只包含數據庫表的部分行、部分列,可能是由數據庫中多個表組合而成的數據,還可能是所有這些的組合,這取決于用于獲得數據的查詢語句。通常,DataTable與數據庫中的表匹配,但仍然要知道上面提到的事實。</p><p>  圖3.2.5說明了DataTable與其他ADO.NET對象之間的關系。</p><p&

92、gt;  圖2.5  DataTable</p><p>  要獲得完全填充的DataTable,可使用數據適配器。有包含數據的DataTable后,就可以訪問行、列、約束和它包含的其他信息。這些信息可以通過命名恰切的屬性來訪問,包括Rows、Columns和Contraints等。</p><p>  上面提到的3個屬性都返回一個集合類(DataRowCollection、Da

93、taColumnCollection和ConstaintCollection)對象。與其他集合類一樣,這些類可用于在它們包含的對象集合中導航,添加或刪除項等。稍后將介紹這些集合包含的類。</p><p>  DataTable類另一個非常重要的方面是,如何處理數據修改。例如,如果刪除DataTable中的一行,數據適配器如何知道在數據庫中刪除對應的數據?DataTable對象記錄了對原始數據的修改,而不只是數據的

94、當前狀態(tài)。從DataTable中刪除一行并不會真的刪除這些數據,而只是數據被標記為已刪除。在DataTable對象的消費方(如應用程序)看來,就像數據已被刪除,但實際上并沒有刪除。</p><p>  任何時候都可以使用GetChanges()方法獲得關于對DataTable對象所做的修改列表(以另一個DataTable對象的形式)??梢栽谶m當時使用AcceptChanges()方法接受已做的修改,從而覆蓋原來的

95、數據。例如,可以在修改提交到數據庫后這樣做。也可以使用RejectChanges()撤銷所有的修改,如當最終用戶單擊“取消”按鈕時。</p><p>  DataTable對象也暴露了很多事件,在應用程序中可以定制這些事件,如RowDeleted和ColumnChanged。使用這些事件可以保證應用程序對事件進行響應,還可以實現其他功能,例如,確保底層數據庫在數據發(fā)生修改時立即更新。</p><

96、;p> ?。?)DataColumn。</p><p>  DataColumn存儲了在數據表中定義列所需的所有信息。在DataTable中,Columns屬性包含一個DataColumnCollection,這是一個DataColumn對象集合。</p><p>  DataColumn還包含與DBMD匹配的屬性,包括ColumnName、Dataype、AllowDBNull和D

97、efaultValue。它的屬性可能比使用的DBMS的屬性還要多,但如果使用過不同的DBMS,這一點將顯而易見。對于SQL Server,這并不是問題。</p><p> ?。?)Constaint。</p><p>  Constaint對象(在ConstaintCollection中,可通過DataTable.Constaints訪問)用于包含表的所有元數據,這些數據不包含在DataC

98、olumn對象中。Constaint類作為更具體類的基類,這些具體類包括UniqueConstaint—用于確保給定列或列組合的值是唯一的(例如,這對于主鍵是必須的)和ForeingKeyConstaint—用于實現表之間的關系。</p><p> ?。?)DataRow。</p><p>  DataRow類用于存儲表中一行包含的數據。通過DataTable.Rows屬性可以訪問Data

99、Row Collection對象,后者存儲了組成表數據的多個DataRow對象。一行數據中的各列可通過索引器來訪問,索引器讓你能夠通過列名、索引和版本(例如,如果行被修改)來訪問列。</p><p>  行的當前狀態(tài),即它是否被修改、刪除或以某種方式改變,可通過DataRowState屬性訪問。該屬性的值為DataRowState類型,這是一種包含所有可能行狀態(tài)的枚舉類型。各個DataRow對象也有與DataTa

100、ble對應的方法,用于接受、拒絕和獲得更改。例如,可以推斷出,調用DataTable. AcceptChanges()將級聯地對表的每行調用DataRow AcceptChanges()。</p><p>  6.DataRelation</p><p>  在處理多個DataTable對象時,通常需要表示(并實施)表數據之間的關系。這由DataRelation類來完成??蓪⒍鄠€DataR

101、elation對象組合起來,構成一個DataRelationCollection對象。</p><p>  關系可以用DataRelation類的多個屬性來定義,包括ChildTable、ChildColumns、ChildKeyConstraint、ParentTable和ParentKeyConstraint等。這些屬性都是對相應的對象的引用,如DataTable和DataColumn對象。關系名也被存儲在D

102、ataRelation.RelationName屬性中。</p><p>  現在還不用太擔心DataRelation對象,因為它們封裝了ADO.NET比較高級的方面,這在本書后面將介紹。</p><p><b>  7.DataSet</b></p><p>  現在到了ADO.NET中最重要的類—DataSet。從某種程度上說,該類只是Da

103、taTable對象和DataRelation對象的集合(如圖2.6所示)。然而,DataSet的強大功能體現在與其他對象結合使用,包括用于Web應用程序和Windows應用程序的控件、Web服務和XML文檔。</p><p>  DataSet類包含很多屬性和方法;其中很多與其組成部分的屬性和方法類似,例如,GetChanges()和RejectChanges()。還有一些重要的屬性,如Tables(以DataT

104、ableCollection類的形式包含DataSet中的表集合)、Relations(包含一個DataRelation Collection類,其中的Relation對象定義了表之間的關系)。</p><p>  數據表之間的關系及應用于數據的約束使得對DataSet的操作很麻煩。例如,如果兩個表之間存在一對多關系,則添加一行到其中一個表中,可能要求另一個表中存在一行。而這行可能不存在(例如,如果兩行同時添加時

105、),這時,為避免錯誤,添加這些行的順序將很重要;必須先添加位于關系“一”端的行。也可以將DataSet.Enforce Constraints屬性設置為false,這樣在執(zhí)行編輯操作時將忽略關系。</p><p> ?。?)DataSet對象和XML之間的關系。</p><p>  與ADO.NET的其他對象一樣,設計DataSet對象時也考慮了XML數據。使用DataSet. GetXm

106、l()方法,可將數據集轉換為XML文檔;還可以使用DataSet.GetXmlSchema()方法只提取數據集中的架構(包括數據集包含的所有表和其他對象的架構)作為XML文檔。還可使用序列化技術在DataSet和XML文檔之間進行轉換,因為DataSet類實現了IxmlSeria- lizable接口。</p><p>  DataSet對象與XML之間的關系以及使用序列化在這兩種表示格式之間進行轉換,在.NET

107、框架中運用相當廣泛。它提供了一種在應用程序層之間和通過Internet交換數據的很好方法。特別地,有了數據集的XML表示形式后,就可以在Web服務之間進行交換DataSet對象。</p><p> ?。?)類型化數據集(typed data set)。</p><p>  DataSet對象的功能很強大,但它們并不是最容易使用或最合乎邏輯的。例如,要訪問表中的特定行,使用它就顯得很笨拙。必

108、須使用DataSet.Tables集合獲得正確的表,用DataTable.Rows集合獲得正確的行,然后以對象引用的形式或通過DataColumn的方法提取列數據—這些都不容易。訪問特定列的代碼行可能如下所示:</p><p>  int result = (int)myDataSet.Tables["myTable"].Rows[5][ "IntegerColumn"];

109、</p><p>  還有一種方法,那就是使用類型化數據集。類型化數據集是DataSet的子類,但它包含強類型屬性和方法,使得數據操作更容易。如果使用類型化數據集,上面的代碼就可以簡化為如下所示:</p><p>  int result = myTypedDataSet.MyTable[5].IntegerColumn;</p><p>  雖然這并不影響代碼的功

溫馨提示

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

評論

0/150

提交評論