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

下載本文檔

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

文檔簡介

1、畢業(yè)設計(論文)企業(yè)人事管理系統(tǒng)的設計與實現2009年12月13日學 院 計算機學院 專 業(yè) 計算機科學與技術 年級班別 2006年 學 號 0610151550023 學生姓名 朱 競 指導教師 謝光強 摘 要在當今社會,互聯網空前的發(fā)展,給人們的工作和生活帶來了極大的便利和高效,信息化,電子化已經成為節(jié)約運營成本,提高工作效率的首選??紤]到當前大量企業(yè)的人事管理尚處于手工作業(yè)階段,不但效率低下,還常常因為管理的不慎而出現紕漏。因此根據部分企業(yè)提供的需求,設計此企業(yè)人事管理系統(tǒng),以幫助企業(yè)達到人事管理辦公自動化、節(jié)約管理成本、提高企業(yè)工作效率的目的。本企業(yè)人事管理系統(tǒng)采用C/S結構,主要對企

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

3、ent System Based on C/SAbstractAuthor:Jing Zhu Tutor:Weigen QiuIn our society, the unprecedented development of Internet has brought us great convenience and efficiency. Informatization and electronization have become the first choice of saving operation cost and improving work efficiency. Many ente

4、rprises' personnel administration systems lie in the phase of manual management which 阿惹 inefficient and easy to go wrong by carelessness. Therefore, this MIS(Management Information System)is designed  to make the personnel administration more scientific, normative and efficient.The system

5、adopts the structure mode of client/server(C/S), Windows XP as the operation system,SQL 2005 Express as the background database, and Microsoft Visual Studio.NET 2005 as the developing tool. It can help enterprises to establish a perfect, strong staff information database, which facilitates the centr

6、alized management of staff information and workflow.The paper explains the course design, system design and implementation of MIS, also briefly introduces the process of the system development.Key words: Personnel Management System; C/S; Employee Information DatabaseII67企業(yè)人事管理系統(tǒng)廣東工業(yè)大學2009屆畢業(yè)設計企業(yè)人事管理

7、系統(tǒng)21前言21.1 應用的目的與意義21.2 人事管理系統(tǒng)發(fā)展趨勢31.2.2 世界趨勢31.2.3 技術革新31.2.4 工作目標和價值觀的改變41.3 系統(tǒng)調研41.3.1 社會可行性分析41.3.2 技術可行性分析41.3.3 經濟可行性分析51.3.4 管理可行性分析51.4 研究內容52開發(fā)工具及其語言特點52.1 Visual Studio.NET主要特點如下52.2.1簡潔的語法72.2.2精心地面向對象設計72.2.3與Web的緊密結合82.2.4完整的安全性與錯誤處理92.2.5版本處理技術92.2.6靈活性和兼容性103.1SQL2005主要特點103.1.1.NET框架

8、103.1.2XML技術113.1.3ADO.NET2.0版本113.1.4增強的安全性113.1.5Transact-SQL的增強性能113.1.6SQL服務中介113.1.7通告服務113.1.8Web服務123.1.9報表服務123.1.10全文搜索功能的增強123.2C#與ADO.NET123.2.1  C#中的數據庫訪問123.2.2 數據綁定233.3 SQL語言243.3.1表定義語句243.3.2視圖定義語句243.3.3索引定義語句243.3.4數據操縱語句243.3.5INSERT語句253.3.6UPDATE語句253.3.7DELETE語句253.3.8查詢語

9、句253.3.9條件查詢253.3.10查詢排序263.3.11統(tǒng)計查詢263.3.12Group by子句263.3.13Distinct關鍵詞263.3.14Top關鍵詞263.3.15多表查詢273.3.16多重查詢273.3.17EXISTS關鍵詞274系統(tǒng)需求分析274.1系統(tǒng)流程圖如下275 致謝49附錄F 各模塊實現的主要源代碼50F1.1登錄模塊的設計與實現的主要代碼5051F1.2登陸實體類:51F1.3 員工管理模塊的設計與實現的主要代碼52F1.3.1員工管理實現的主要代碼:52F1.3.2 部門管理實現主要代碼:5355F1.3.3工資管理主要代碼:5559F1.3.4

10、考勤信息設計與實現主要代碼:5962F1.4 數據訪問類:6265F1.5生日提醒主要代碼:65F1.6啟動第三方EXE文件操作類:6566企業(yè)人事管理系統(tǒng)1前言1.1 應用的目的與意義人的管理是一切管理工作的核心。員工代表一個企業(yè)的形象,因而人事管理機制設計的好壞,直接影響一個企業(yè)的成敗。 員工的檔案管理是企業(yè)人事管理的基礎,在企業(yè)員工普遍流失的今天,一個準確而及時的人事管理系統(tǒng),有利于人事部門對員工流動進行分析、編制,為企業(yè)所需人員提供了保障。人力資源部那些重復的,事務性的工作交給HRP(Human Resource Planning,人力資源管理系統(tǒng))來解決,可以省去用戶以往人力資源管理

11、工作的繁瑣、枯燥;用領先的人力資源管理理念,把人力資源管理的作業(yè)流程控制和戰(zhàn)略規(guī)劃設計巧妙地集合于一體;系統(tǒng)重點涉及到人力資源管理工作中的薪資、考勤、績效、調動、基本信息、用戶管理以及用戶切換等方面,并有綜合的系統(tǒng)安全設置、報表綜合管理模塊??梢院芎玫貫橛脩舻娜肆Y源管理部門在對員工的成本管理、知識管理、績效管理等綜合管理給予幫助。以每個月中所發(fā)工資為例,其中包括考勤、人事信息變動、獎懲、遲到和曠工對本月的薪資計算都有影響,為了及時的計算發(fā)放工資往往要提前一個星期花費大量時間,加班加點才能及時完成,而這樣做無論從工作效率還是準確度方面,都不允許,而且還浪費大量的人力財力。如果改用HRP管理做到

12、高效、高精度,還可以減少管理時帶來的一些繁瑣的工作,節(jié)約管理帶來的開支。1.2 人事管理系統(tǒng)發(fā)展趨勢1.2.2 世界趨勢人力資源管理系統(tǒng)主導21世紀,無論是發(fā)達國家還是發(fā)展中國家,對人力資源的戰(zhàn)略性意義都有了深刻的認識,并開始付諸行動。世界公認,21世紀將是人力資源的世紀;人力資源問題將主導整個21世紀甚至更為遙遠,這種狀況的變化起因于競爭壓力。目前,世界經濟趨向全球化。世界經濟的全球化過程和國家的開放過程,要求組織的管理部門降低管理成本以減少競爭壓力和增強競爭能力。對于不同的組織,人力資源成本在總成本中的比例是不一樣的。1.2.3 技術革新無論是現在還是將來,工業(yè)的發(fā)展越來越多地取決于科學和

13、技術、知識與技能。高新科技產業(yè)更是如此。這不僅要求員工尤其是技術人員掌握新的科學知識和技術能力,而且更重要的在于要求員工深入而快捷地掌握和應用這些知識和技能。這就導致了兩個問題。第一,隨著這種技術革新的發(fā)展和知識更新速度的加快,人們有更多的職業(yè)選擇機會。第二,伴隨著這種發(fā)展以及職業(yè)選擇機會的增多,人力資源管理活動和頻繁程度加?。欢疫@種活動對科學技術的要求與它的反應程度也更高了,進而提高了人力資源成本。1.2.4 工作目標和價值觀的改變隨著社會政治和經濟的發(fā)展,人們的工作目標和價值觀也都發(fā)生了重要的變化。這就對人事管理部門和管理人員提出了新的要求和新的問題,不得不考慮諸如工作類型設計、崗位分析

14、、充分尊重員工以及為他們提供良好的個人發(fā)展和自我價值實現的環(huán)境與條件等問題。這樣,人力資源管理就派上了用場。1.3 系統(tǒng)調研1.3.1 社會可行性分析隨著計算機的發(fā)展與普及,以及互聯網技術的擴展,日常勞資人事管理必將實現無紙化辦公,并且加入到公司內部的Intranet或者是Internet上去,實現數據的共享,這樣有利于勞資人事信息在單位內部的查詢,提高了數據資源的利用,并且能及時的得到更新,不需要象過去那樣浪費大量的人力物力去進行抄寫,提高了工作的效率1.3.2 技術可行性分析Visual Studio.NET提供了一個統(tǒng)一的、緊密集成的可視化編程環(huán)境,簡化了開發(fā)應用程序的過程,縮短了實用方

15、法的時間。利用Visual Studio.NET,可以非常輕松地創(chuàng)建具有自動伸縮能力的可靠的應用程序和組件。而且微軟的優(yōu)秀成果c#語言保持了c/c+所特有的強大功能和控制能力。與c+十分相似的模型和語法,具有與COM+服務完全的交互性和完全支持能力,能夠輕松地遷移現有的代碼。數據庫方面SQL2005已經可以滿足中小型企業(yè)的數據要求,甚至有些大型企業(yè)都可以達到要求。如今進算計普及程度日益推廣,計算機配置日新月異,能承載此系統(tǒng)的機器就如辦公的機器都可以達到要求。所以說本系統(tǒng)具有技術可行性。1.3.3 經濟可行性分析采用傳統(tǒng)的手工輸入方法,不僅工作繁瑣而且需要人力輸入多,記錄容易出錯,那樣產生了成本

16、高,效果差的弊病,對于一個企業(yè)的資料庫建立是十分困難和麻煩的。而采用這種系統(tǒng)所發(fā)費的成本,精力都遠遠低于手工,并且實用十分方便,更新也簡易,每個部門只需一個人統(tǒng)一管理,對企業(yè)實現辦公無紙化能起到很大的作用。所以此系統(tǒng)經濟可行性也具備了。1.3.4 管理可行性分析本系統(tǒng)采用了系統(tǒng)數據備份、恢復的功能,而且界面層次分明,一目了然,加上設計方面加入了人性化元素。管理此系統(tǒng)并不難,易學易會。1.4 研究內容本論文共分為5章。第1章緒論,介紹了本課題的應用目的和意義、人事管理系統(tǒng)、可行性分析和研究內容。第2章介紹了開發(fā)工具及其特點、數據庫技術。第3章主要介紹了系統(tǒng)的設計與分析,包括總體設計、數據庫設計、

17、詳細設計等。第4章主要介紹系統(tǒng)實現,即系統(tǒng)各種模塊的功能實現。第5章為本課題完成成果和發(fā)展期望的總結。本論文主要利用C#可視化技術及SQL數據庫開發(fā)技術,對員工管理與考勤管理系統(tǒng)進行系統(tǒng)化、細致化和完善化的分析研究。2開發(fā)工具及其語言特點2.1 Visual Studio.NET主要特點如下2.1.1提供加速開發(fā)過程的高效工具Visual Studio.NET提供了一個統(tǒng)一的、緊密集成的可視化編程環(huán)境,以幫助用戶簡化開發(fā)網絡應用程序的過程,縮短學習使用方法的時間。它提供了一種新的語言C#。通過共享的HTML、XML和樣式單編輯器,用戶可以輕松地借助包括C#在內的任何一種Visual Studi

18、o語言來開發(fā)網絡應用程序。2.1.2 提供對各種網絡應用程序的快速設計能力借助Web Form,用戶可以用他們在開發(fā)基于窗體的桌面應用程序時所使用的技巧來創(chuàng)建跨平臺、跨瀏覽器的網絡應用程序。2.1.3 利用XML和Web Service來簡化分布式計算Web Service借助標準的Intemet協議在網絡上調用商務邏輯。HTTP被作為Web Service傳輸的基礎協議,該協議使得對功能的請求能夠穿越各種團體所使用的防火墻。XML被用來對上述功能請求的參數進行格式統(tǒng)一,從而使這些請求能夠使用于所有的軟件和硬件。這樣使得對Web Service的訪問可以通過任何一種語言、使用任何一種組件模型在

19、任何一種操作系統(tǒng)上實現。2.1.4快速構建中間層商務組件Visual Studio的一個核心目標就是要為基于服務器的應用程序提供應用程序快速部署工具。利用Visual Studio.NET創(chuàng)建的組件將為您的商務運作提供足夠的功能和伸縮性。2.1.5構建可靠的可伸縮解決方案利用Visual Studio.NET,用戶可以非常輕松地創(chuàng)建具有自動伸縮能力的可靠的應用程序和組件。2.2 C#技術概述C#在帶來對應用程序的快速開發(fā)能力的同時,并沒有犧牲C與C+程序員所關心的各種特性。它忠實地繼承了C和C+的優(yōu)點。如果你對C或C+有所了解,你會發(fā)現它是那樣的熟悉。即使你是一位新手,C#也不會給你帶來任何其

20、它的麻煩,快速應用程序開發(fā)(Rapid Application Development,RAD)的思想與簡潔的語法將會使你迅速成為一名熟練的開發(fā)人員。C#是專門為.NET應用而開發(fā)出的語言。這從根本上保證了C#與.NET框架的完美結合。在.NET運行庫的支持下,.NET框架的各種優(yōu)點在C#中表現得淋漓盡致。C#的一些突出的特點簡潔的語法精心地面向對象設計與Web的緊密結合完整的安全性與錯誤處理版本處理技術靈活性與兼容性2.2.1簡潔的語法在缺省的情況下,C#的代碼在.NET框架提供的“可操縱”環(huán)境下運行,不允許直接地內存操作。它所帶來的最大的特色是沒有了指針。與此相關的是,那些在C+中被瘋狂使

21、用的操作符(例如:“:”、“->”和“.,”)已經不再出現。C#只支持一個“.”,對于我們來說,現在需要理解的一切僅僅是名字的嵌套而已。C#用真正的關鍵字換掉了那些把活動模板庫(Active Template Library,ALT)和COM搞得亂糟糟的偽關鍵字,如OLE_COLOR、BOOL、VARIANT_BOOL、DISPID_XXXXX等等。每種C#操作符在.NET類庫中都有了新名字。語法中的冗余是C+中的常見的問題,比如"const"和"#define"、各種各樣的字符類型等等。C#對此進行了簡化,只保留了常見的形式,而別的冗余形式從它的

22、語法結構中被清除了出去。2.2.2精心地面向對象設計從Smalltalk開始,面向對象的話題就始終纏繞著任何一種現代程序設計語言。的確,C#具有面向對象的語言所應有的一切特性:封裝、繼承與多態(tài)性,這并不出奇。然而,通過精心地面向對象設計,從高級商業(yè)對象到系統(tǒng)級應用,C#建造廣泛組件的絕對選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個對象。C#提供了一個叫做裝箱(boxing)與拆箱(unboxing)的機制來完成這種操作,而不給使用者帶來麻煩,這在以后的章節(jié)中將進行更為詳細的介紹。C#只允許單繼承,即一個類不會有多個基類,從而避免了類型定義的混亂。在后面的學習中你很快會發(fā)現,C#中沒有了全局

23、函數,沒有了全局變量,也沒有了全局常數。一切的一切,都必須封裝在一個類之中。你的代碼將具有更好的可讀性,并且減少了發(fā)生命名沖突的可能。整個C#的類模型是建立在.NET虛擬對象系統(tǒng)(Visual Object System,VOS)的基礎之上,其對象模型是.NET基礎架構的一部分,而不再是其本身的組成部分。在下面將會談到,這樣做的另一個好處是兼容性。借助于從VB中得來的豐富的RAD經驗,C#具備了良好的開發(fā)環(huán)境。結合自身強大的面向對象功能,C#使得開發(fā)人員的生產效率得到極大的提高。對于公司而言,軟件開發(fā)周期的縮短將能使它們更好應付網絡經濟的競爭。在功能與效率的杠桿上人們終于找到了支點。2.2.3

24、與Web的緊密結合.NET中新的應用程序開發(fā)模型意味著越來越多的解決方案需要與Web標準相統(tǒng)一,例如超文本標記語言(Hypertext Markup Language,HTML)和XML。由于歷史的原因,現存的一些開發(fā)工具不能與Web緊密地結合。SOAP的使用使得C#克服了這一缺陷,大規(guī)模深層次的分布式開發(fā)從此成為可能。由于有了Web服務框架的幫助,對程序員來說,網絡服務看起來就象是C#的本地對象。程序員們能夠利用他們已有的面向對象的知識與技巧開發(fā)Web服務。僅需要使用簡單的C#語言結構,C#組件將能夠方便地為Web服務,并允許它們通過Internet被運行在任何操作系統(tǒng)上的任何語言所調用。舉

25、個例子,XML已經成為網絡中數據結構傳遞的標準,為了提高效率,C#允許直接將XML數據映射成為結構。這樣就可以有效的處理各種數據。2.2.4完整的安全性與錯誤處理語言的安全性與錯誤處理能力,是衡量一種語言是否優(yōu)秀的重要依據。任何人都會犯錯誤,即使是最熟練的程序員也不例外:忘記變量的初始化,對不屬于自己管理范圍的內存空間進行修改,這些錯誤常常產生難以預見的后果。一旦這樣的軟件被投入使用,尋找與改正這些簡單錯誤的代價將會是讓人無法承受的。C#的先進設計思想可以消除軟件開發(fā)中的許多常見錯誤,并提供了包括類型安全在內的完整的安全性能。為了減少開發(fā)中的錯誤,C#會幫助開發(fā)者通過更少的代碼完成相同的功能,

26、這不但減輕了編程人員的工作量,同時更有效地避免了錯誤的發(fā)生。.NET運行庫提供了代碼訪問安全特性,它允許管理員和用戶根據代碼的ID來配置安全等級。在缺省情況下,從Internet和Intranet下載的代碼都不允許訪問任何本地文件和資源。比方說,一個在網絡上的共享目錄中運行的程序,如果它要訪問本地的一些資源,那么異常將被觸發(fā),它將會無情地被異常扔出去,若拷貝到本地硬盤上運行則一切正常。內存管理中的垃圾收集機制減輕了開發(fā)人員對內存管理的負擔。.NET平臺提供的垃圾收集器(Garbage Collection,GC)將負責資源的釋放與對象撤銷時的內存清理工作。變量類型是安全的。C#中不能使用未初始

27、化的變量,對象的成員變量由編譯器負責將其置為零,當局部變量未經初始化而被使用時,編譯器將做出提醒;C#不支持不安全的指向,不能將整數指向引用類型,例如對象,當進行下行指向時,C#將自動驗證指向的有效性;C#中提供了邊界檢查與溢出檢查功能。2.2.5版本處理技術C#提供內置的版本支持來減少開發(fā)費用,使用C#將會使開發(fā)人員更加輕易地開發(fā)和維護各種商業(yè)用戶。升級軟件系統(tǒng)中的組件(模塊)是一件容易產生錯誤的工作。在代碼修改過程中可能對現存的軟件產生影響,很有可能導致程序的崩潰。為了幫助開發(fā)人員處理這些問題,C#在語言中內置了版本控制功能。例如:函數重載必須被顯式聲明,而不會象在C+或java中經常發(fā)生

28、的那樣不經意地被進行,這可以防止代碼級錯誤和保留版本化的特性。另一個相關的特性是接口和接口繼承的支持。這些特性可以保證復雜的軟件可以被方便地開發(fā)和升級。2.2.6靈活性和兼容性在簡化語法的同時,C#并沒有失去靈活性。盡管它不是一種無限制語言,比如:它不能用來開發(fā)硬件驅動程序,在默認的狀態(tài)下沒有指針等等,但是,在學習過程中你將發(fā)現,它仍然是那樣的靈巧。如果需要,C#允許你將某些類或者類的某些方法聲明為非安全的。這樣一來,你將能夠使用指針、結構和靜態(tài)數組,并且調用這些非安全代碼不會帶來任何其它的問題。此外,它還提供了一個另外的東西(這樣的稱呼多少有些不敬)來模擬指針的功能-delegates,代表

29、。再舉一個例子:C#不支持類的多繼承,但是通過對接口的繼承,你將獲得這一功能。2.2.7安全性正是由于其靈活性,C#允許與C風格的需要傳遞指針型參數的API進行交互操作,DLL的任何入口點都可以在程序中進行訪問。C#遵守.NET公用語言規(guī)范(Common Language Specification,CLS),從而保證了C#組件與其它語言組件間的互操作性。元數據(Metadata)概念的引入既保證了兼容性,又實現了類型安全。3.1SQL2005主要特點3.1.1.NET框架使用SQL Server2005,開發(fā)人員通過使用相似的語言,例如微軟的VisualC#.NET和微軟的VisualBas

30、ic,將能夠創(chuàng)立數據庫對象。開發(fā)人員還將能夠建立兩個新的對象用戶定義的類和集合。 3.1.2XML技術 在使用本地網絡和互聯網的情況下,在不同應用軟件之間散步數據的時候,可擴展標記語言(XML)是一個重要的標準。SQL Server2005將會自身支持存儲和查詢可擴展標記語言文件。 3.1.3ADO.NET2.0版本 從對SQL類的新的支持,到多活動結果集(MARS),SQL Server2005中的ADO.NET將推動數據集的存取和操縱,實現更大的可升級性和靈活性。 3.1.4增強的安全性 SQL Server2005中的新安全模式將用戶和對象分開,提供fine-grainaccess存取、

31、并允許對數據存取進行更大的控制。另外,所有系統(tǒng)表格將作為視圖得到實施,對數據庫系統(tǒng)對象進行了更大程度的控制。 3.1.5Transact-SQL的增強性能 SQL Server2005為開發(fā)可升級的數據庫應用軟件,提供了新的語言功能。這些增強的性能包括處理錯誤、遞歸查詢功能、關系運算符PIVOT,APPLY,ROW_NUMBER和其他數據列排行功能,等等。 3.1.6SQL服務中介 SQL服務中介將為大型、營業(yè)范圍內的應用軟件,提供一個分布式的、異步應用框架。 3.1.7通告服務 通告服務使得業(yè)務可以建立豐富的通知應用軟件,向任何設備,提供個人化的和及時的信息,例如股市警報、新聞訂閱、包裹遞送

32、警報、航空公司票價等。在SQL Server2005中,通告服務和其他技術更加緊密地融合在了一起,這些技術包括分析服務、SQLServerManagementStudio。 3.1.8Web服務 使用SQL Server2005,開發(fā)人員將能夠在數據庫層開發(fā)Web服務,將SQL Server當作一個超文本傳輸協議(HTTP)偵聽器,并且為網絡服務中心應用軟件提供一個新型的數據存取功能。 3.1.9報表服務 利用SQL Server2005,報表服務可以提供報表控制,可以通過VisualStudio2005發(fā)行。 3.1.10全文搜索功能的增強 SQL Server2005將支持豐富的全文應用軟

33、件。服務器的編目功能將得到增強,對編目的對象提供更大的靈活性。查詢性能和可升級性將大幅得到改進,同時新的管理工具將為有關全文功能的運行,提供更深入的了解。3.2C#與ADO.NET3.2.1  C#中的數據庫訪問用.NET框架編寫的(當然也包括用C#編寫的應用程序)應用程序需要訪問數據庫時,將使用ADO.NET來實現數據庫訪問。數據綁定是一種非常有用的訪問數據庫的方法,能夠減少需要編寫的代碼量。很多簡單任務可以通過純粹聲明式代碼來完成。<1> ADO.NETADO.NET是微軟的數據訪問框架的最新產物,它是.NET框架的一部分。在ADO.NET之前,程序員在ASP(Act

34、ive Server Pages)或Visual Basic中使用ADO(AtiveX Data Objects),這是一組COM(Component Object Model,組件對象模型)組件,它通過一個易于使用的封裝類提供對底層數據訪問代碼的訪問。雖然ADO大大簡化了數據庫訪問,但更高級的程序員(特別是C+程序員)通常更喜歡使用更直接、更快的代碼,如OLE DB(Object Linking and Embedding for Databases)代碼庫。ADO.NET比ADO的功能更強大。它是在.NET代碼中訪問數據庫的最好工具。.NET框架中的ADO.NET類型(在System.Da

35、ta命名空間及其子空間下的所有類型)包括那些為訪問SQL Server、OLE DB、ODBC和Oracle數據庫而優(yōu)化的類型。它們都是基于通用類的,因此使用ADO.NET訪問不同的DBMS是相似的。ADO.NET類型實現兩個主要的功能。      數據訪問:用于訪問數據庫中數據和操作數據庫的類型;      數據表示:用于包含數據庫數據(如數據表)的類型。這兩種類型之間聯系密切,在數據庫開發(fā)中兩種類型都會用到。嚴格地說,可以只用一種數據庫訪問類型。然而,如果使用數據訪問類型來填充數據表示類型將

36、節(jié)省大量工作。 ADO.NET包含7個重要的基類,其中4個是數據訪問類:   DbConnection;   DbCommand;   DbDataReader;   DbDataAdapter。其他3個類是數據表示類:   DataTable;   DataRelation;   DataSet。DataTable類使用了其他一些重要的類:DataColum、Constraint和DataRow,本節(jié)也將介紹它們。1DbConnect

37、ionDbConnection類提供與數據庫的連接。創(chuàng)建DbConnection對象時,應提供與DBMS通信所需的所有信息,如數據庫的位置、用于認證的用戶名和密碼以及要訪問的DBMS中的數據庫。所有其他ADO.NET數據訪問類都依靠DbConnection與數據庫進行通信。DbConnection類的扮演角色如圖2.1所示。圖3.2.1  DbConnection類在從DbConnection派生而來的類中,到數據庫的連接都是由連接字符串定義的,該字符串存儲在屬性DbConnection.ConnectionString中。數據庫連接應只在傳輸數據時才打開,因此創(chuàng)建DbConnect

38、ion實例時并不自動連接到數據庫。DbConnection類定義了Open()方法和Close()方法,用于控制連接何時可用。很多其他的ADO.NET類也能控制連接狀態(tài),例如,有些類在完成操作后關閉它們使用的連接。DbConnection對象還能參與事務??捎肈bConnection.BeginTransaction()方法開始事務,或使用DbConnection.EnlistTransaction()作為已有事務的一部分執(zhí)行操作。訪問SQL Server或SQL Server速成版中的數據時,使用SqlConnection,該類是DbConnection的子類。一般來說,DbConnecti

39、on和SqlConnection及其他子類都稱為連接類。2DbCommandDbCommand類提供與數據庫交互的主要方法??梢杂肈bCommand對象來執(zhí)行SQL語句、運行存儲過程等。DbCommand及其派生類稱為命令類。大部分時候并不直接使用DbCommand,而是用封裝了DbCommand的其他對象。但有時候需要對數據庫通信進行更多的控制,這時就可以使用DbCommand對象。DbCommand對象的扮演角色如圖2.2所示。圖3.2.2  DbCommand類DbCommand中最重要的屬性是DbCommand.CommandText。要執(zhí)行SQL語句,就要將語句文本放在這個

40、屬性中。可以用DbCommand.CommandType來指定要執(zhí)行的語句類型,使用DbCommand.Connection和DbCommand.Tranction來訪問底層的連接或事務。要注意,DbCommand對象可能有參數化的命令字符串,命令中的參數來自類型為DbCommand. Parameters集合的屬性。這與直接在命令字符串中輸入參數相比有很多優(yōu)點,在本書后面部分將會看到。要使用DbCommand對象執(zhí)行命令,有三種選擇,這取決于要執(zhí)行的命令是什么。有些命令不返回結果,這種情況下可以用DbCommand.ExecuteNonQuery()方法;有些命令返回一個結果,這時可用DbC

41、ommand.ExecuteScalar()方法;最后,有很多命令返回多行數據,這時可用DbCommand. ExecuteReader()方法,它將返回一個DbDataReader對象(下一小節(jié)將解釋)。SQL Server的DbCommand版本名為SqlCommand。它有自己的一些特殊方法,如SqlCommand. ExecuteXmlReader()方法,它直接以XML格式返回結果。3DbDataReader使用DbDataReader類可以從結果集中讀取數據,如從執(zhí)行存儲在命令對象中的命令生成的結果集中讀取數據。該類經過高度優(yōu)化,可以很快地訪問數據庫中的數據。然而,這種優(yōu)化也有些副

42、作用,例如,只能以串行方式一次讀取一行數據。不能讀完兩行后再返回去讀取第一行。通常,可以用DbDataReader對象(更確切地說,是數據閱讀器的子類對象)來提取要使用的行數據,并將其存儲在其他對象中。例如,可以讀取一個結果集中的每行,將其存儲到在自定義集合或泛型列表對象中的自定義類中。與命令對象一樣,很多時候數據閱讀器對象是由ADO.NET命名空間下的其他類使用的,用戶不必直接使用它們。圖3.2.3說明了如何在數據庫應用程序中使用數據閱讀器。要使用數據閱讀器對象,首先必須調用DbDataReader.Read()方法選擇結果集中的第一行??刹粩嗾{用該方法來移動數據閱讀器,使數據閱讀器像結果集

43、中的游標一樣總是指向一行。獲取一行時,Read()方法返回true;否則返回false如當所有行都已經讀完時。也可以用DbDataReader. HasRows屬性來判斷結果集中是否還有其他行。圖3.2.4  DbDataReader類很多屬性和方法可用于檢查當前選中的行。DbDataReader.FieldCount查看當前行包含多少列,并用DbDataReader的重載索引器訪問各列。如果知道要訪問的列名,可用基于字符串的索引器來獲得列值,也可以使用基于整數的索引器通過位置獲得列。在這兩種情況下,這種方法都將返回object值,可將其轉化為其他類型的數據。也可以使用DbDataR

44、eader提供的多個方法直接獲得類型化數據,如GetString()和GetInt32()分別將指定列以string和int值返回,列通過其索引選擇。要使用這些方法獲得值類型,必須首先使用DbDataReader.IsDBNull檢查空值;否則,空值將引發(fā)異常。檢查空值是必須的,因為不管什么數據庫類型都可以為空。這與.NET中的值類型不同,可為空的值類型(如int)在這種上下文環(huán)境中是不受支持的。DbDataReader也能夠獲得關于它包含的數據的元信息使用DbDataReader.GetSchema Table()方法,這樣就可以知道列的名稱、數據類型和其他信息,如列是否包含空值。與前面的其

45、他類一樣,也有專門用于SQL Server的數據閱讀器類,這就是SqlDataReader,本書將使用該類。該類繼承DbDataReader,提供將數據讀取為本地SQL類型的方法,這樣就能夠避免空類型的問題。這些類型包含在System.Data.Sqltypes命名空間中,是可為空的;如SqlDouble和SqlInt32。雖然這些類型也可以像標準的值類型那樣進行操作,但它們實際上是引用類型。4DbDataAdapter在ADO.NET的核心數據訪問類中,最后一個是DbDataAdapter類。它比前面介紹過的類型要復雜得多,設計該類的目的只有一個:減少存儲在數據集對象中的數據與數據庫進行數據

46、交換時的干擾。與前面的類一樣,DbDataAdapter類也有很多派生類,它們統(tǒng)稱為數據適配器類。稍后將詳細解釋什么是數據集對象,簡單地說,它們是能夠以.NET對象的形來表示數據庫中數據的對象。數據集對象可以包含整個表或多個表的數據。數據適配器既可以將數據庫中的數據傳輸給包含在數據集中的表,也可以將數據集中的數據傳輸到數據庫中。這個功能由命令對象和數據閱讀器對象執(zhí)行,因此大部分時候用戶不必考慮它。然而,DbDataAdapter最重要的(也是最有用的)特性之一是,它用于傳輸數據的命令對象被暴露出來,因此可以根據需要對它們進行定制。圖2.4說明了DbDataAdapter類的工作原理,包括它包含

47、的命令對象。圖3.2.4  DbDataAdapter類數據適配器使用的4個命令對象存儲在4個屬性中:SelectCommand(用于查詢數據)、InsertCommand(用于添加數據)、UpdateCommand(用于編輯數據)和DeleteCommand(用于刪除數據)。要使用適配器,并不一定全部用到這4個屬性,例如,可以只用適配器來查詢數據。另外,.NET框架可以根據其他命令的值推斷出命令的值,例如,可以根據查詢命令來生成更新、插入和刪除命令。然而,這種自動生成的命令的效率可能不如手工提供的高。本書稍后還會討論這個問題。數據適配器中最常用的兩個方法是DbDataAdapter

48、.Fill()和DbDataAdapter.Update()。Fill()方法從數據庫中獲取數據;Update()方法更新數據庫中的數據。這兩個方法都可以用于數據集或單個數據表。另外,可以使用DbDataAdapter.FillSchema()獲取架構數據。SQL Server中的DbDataAdapter版本是Sql DbDataAdapter。5DataTableDataTable是ADO.NET提供的第一個數據表示類。與數據訪問類不同,數據表示類沒有專門用于特定數據庫管理系統(tǒng)(如SQL Server)的子類,它們獨立于平臺。實際上,如果需要的話,數據表示類完全可以獨立于數據庫使用,它們只

49、是存儲數據的一種方便的方法。DataTable類用于存儲(讀者可能對此感到不解)數據表。在繼續(xù)討論這個類之前需要澄清一件事情:以DataTable對象存儲的表不一定要映射到數據庫中的表。DataTable可能包含表中數據的一個子集,該子集可能只包含數據庫表的部分行、部分列,可能是由數據庫中多個表組合而成的數據,還可能是所有這些的組合,這取決于用于獲得數據的查詢語句。通常,DataTable與數據庫中的表匹配,但仍然要知道上面提到的事實。圖3.2.5說明了DataTable與其他ADO.NET對象之間的關系。圖2.5  DataTable要獲得完全填充的DataTable,可使用數據適

50、配器。有包含數據的DataTable后,就可以訪問行、列、約束和它包含的其他信息。這些信息可以通過命名恰切的屬性來訪問,包括Rows、Columns和Contraints等。上面提到的3個屬性都返回一個集合類(DataRowCollection、DataColumnCollection和ConstaintCollection)對象。與其他集合類一樣,這些類可用于在它們包含的對象集合中導航,添加或刪除項等。稍后將介紹這些集合包含的類。DataTable類另一個非常重要的方面是,如何處理數據修改。例如,如果刪除DataTable中的一行,數據適配器如何知道在數據庫中刪除對應的數據?DataTabl

51、e對象記錄了對原始數據的修改,而不只是數據的當前狀態(tài)。從DataTable中刪除一行并不會真的刪除這些數據,而只是數據被標記為已刪除。在DataTable對象的消費方(如應用程序)看來,就像數據已被刪除,但實際上并沒有刪除。任何時候都可以使用GetChanges()方法獲得關于對DataTable對象所做的修改列表(以另一個DataTable對象的形式)。可以在適當時使用AcceptChanges()方法接受已做的修改,從而覆蓋原來的數據。例如,可以在修改提交到數據庫后這樣做。也可以使用RejectChanges()撤銷所有的修改,如當最終用戶單擊“取消”按鈕時。DataTable對象也暴露了

52、很多事件,在應用程序中可以定制這些事件,如RowDeleted和ColumnChanged。使用這些事件可以保證應用程序對事件進行響應,還可以實現其他功能,例如,確保底層數據庫在數據發(fā)生修改時立即更新。(1)DataColumn。DataColumn存儲了在數據表中定義列所需的所有信息。在DataTable中,Columns屬性包含一個DataColumnCollection,這是一個DataColumn對象集合。DataColumn還包含與DBMD匹配的屬性,包括ColumnName、Dataype、AllowDBNull和DefaultValue。它的屬性可能比使用的DBMS的屬性還要多,

53、但如果使用過不同的DBMS,這一點將顯而易見。對于SQL Server,這并不是問題。(2)Constaint。Constaint對象(在ConstaintCollection中,可通過DataTable.Constaints訪問)用于包含表的所有元數據,這些數據不包含在DataColumn對象中。Constaint類作為更具體類的基類,這些具體類包括UniqueConstaint用于確保給定列或列組合的值是唯一的(例如,這對于主鍵是必須的)和ForeingKeyConstaint用于實現表之間的關系。(3)DataRow。DataRow類用于存儲表中一行包含的數據。通過DataTable.R

54、ows屬性可以訪問DataRow Collection對象,后者存儲了組成表數據的多個DataRow對象。一行數據中的各列可通過索引器來訪問,索引器讓你能夠通過列名、索引和版本(例如,如果行被修改)來訪問列。行的當前狀態(tài),即它是否被修改、刪除或以某種方式改變,可通過DataRowState屬性訪問。該屬性的值為DataRowState類型,這是一種包含所有可能行狀態(tài)的枚舉類型。各個DataRow對象也有與DataTable對應的方法,用于接受、拒絕和獲得更改。例如,可以推斷出,調用DataTable. AcceptChanges()將級聯地對表的每行調用DataRow AcceptChange

55、s()。6DataRelation在處理多個DataTable對象時,通常需要表示(并實施)表數據之間的關系。這由DataRelation類來完成。可將多個DataRelation對象組合起來,構成一個DataRelationCollection對象。關系可以用DataRelation類的多個屬性來定義,包括ChildTable、ChildColumns、ChildKeyConstraint、ParentTable和ParentKeyConstraint等。這些屬性都是對相應的對象的引用,如DataTable和DataColumn對象。關系名也被存儲在DataRelation.Relation

56、Name屬性中?,F在還不用太擔心DataRelation對象,因為它們封裝了ADO.NET比較高級的方面,這在本書后面將介紹。7DataSet現在到了ADO.NET中最重要的類DataSet。從某種程度上說,該類只是DataTable對象和DataRelation對象的集合(如圖2.6所示)。然而,DataSet的強大功能體現在與其他對象結合使用,包括用于Web應用程序和Windows應用程序的控件、Web服務和XML文檔。DataSet類包含很多屬性和方法;其中很多與其組成部分的屬性和方法類似,例如,GetChanges()和RejectChanges()。還有一些重要的屬性,如Tables

57、(以DataTableCollection類的形式包含DataSet中的表集合)、Relations(包含一個DataRelation Collection類,其中的Relation對象定義了表之間的關系)。數據表之間的關系及應用于數據的約束使得對DataSet的操作很麻煩。例如,如果兩個表之間存在一對多關系,則添加一行到其中一個表中,可能要求另一個表中存在一行。而這行可能不存在(例如,如果兩行同時添加時),這時,為避免錯誤,添加這些行的順序將很重要;必須先添加位于關系“一”端的行。也可以將DataSet.Enforce Constraints屬性設置為false,這樣在執(zhí)行編輯操作時將忽略關

58、系。(1)DataSet對象和XML之間的關系。與ADO.NET的其他對象一樣,設計DataSet對象時也考慮了XML數據。使用DataSet. GetXml()方法,可將數據集轉換為XML文檔;還可以使用DataSet.GetXmlSchema()方法只提取數據集中的架構(包括數據集包含的所有表和其他對象的架構)作為XML文檔。還可使用序列化技術在DataSet和XML文檔之間進行轉換,因為DataSet類實現了IxmlSeria- lizable接口。DataSet對象與XML之間的關系以及使用序列化在這兩種表示格式之間進行轉換,在.NET框架中運用相當廣泛。它提供了一種在應用程序層之間和通

溫馨提示

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

評論

0/150

提交評論