版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(論文)</b></p><p><b> 企業(yè)人事管理系統(tǒng)的</b></p><p><b> 設(shè)計與實現(xiàn)</b></p><p><b> 摘 要</b></p><p> 當(dāng)今,互聯(lián)網(wǎng)空前發(fā)展,給人
2、們的工作和生活帶來了極大的便利和效率的提高,電子化,信息化已經(jīng)成為提高工作效率,節(jié)約運營成本的首選??紤]到當(dāng)前大量企業(yè)的人事管理尚處于手工作業(yè)階段,不但效率低,還常常因為管理的不慎而出現(xiàn)問題。因此根據(jù)部分企業(yè)提供的需求,設(shè)計此企業(yè)人事管理系統(tǒng),以幫助企業(yè)達(dá)到人事管理辦公自動化、節(jié)約管理成本、提高企業(yè)工作效率的目的。</p><p> 本企業(yè)人事管理系統(tǒng)采用C/S結(jié)構(gòu),主要對企業(yè)員工的信息以及相關(guān)的工作流程進(jìn)行集
3、中的管理,方便企業(yè)建立一個完善的、強(qiáng)大的員工信息數(shù)據(jù)庫。它以.NET2005和SQL 2005數(shù)據(jù)庫作為開發(fā)平臺。使用C# 設(shè)計操作控件和編寫操作程序,完成數(shù)據(jù)輸入、修改、存儲、調(diào)用查詢等功能;并使用SQL 2005數(shù)據(jù)庫形成數(shù)據(jù)表,進(jìn)行數(shù)據(jù)存儲。</p><p> 本文詳細(xì)介紹了企業(yè)人事管理系統(tǒng)的功能需求,系統(tǒng)設(shè)計和具體實現(xiàn)。</p><p> 關(guān)鍵詞 企業(yè)人事管理系統(tǒng);
4、C/S;員工信息數(shù)據(jù)庫</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技術(shù)革新3</p><p> 1.3 系統(tǒng)調(diào)研4</p><p> 1.3.1 社會可行性分析4</p><p> 1.3.2 技術(shù)可行性分析4</p><p> 1.3.3 經(jīng)濟(jì)可行性分析5</
12、p><p> 1.3.4 管理可行性分析5</p><p> 1.4 研究內(nèi)容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、面向?qū)ο笤O(shè)計7</p><p> 2.2.3與Web的緊密結(jié)合8</p><p> 2.2.4完整的安全性與錯誤處理9</p><p> 2.2.5版本處理技術(shù)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技術(shù)11</p><p> 3.1.3ADO.NET2.0版本11</p><p> 3.1.4增強(qiáng)的安全性11</p><p> 3.1.5Transact-SQL的增強(qiáng)性能11</p><p> 3.1.6SQL服務(wù)中介1
15、1</p><p> 3.1.7通告服務(wù)11</p><p> 3.1.8Web服務(wù)12</p><p> 3.1.9報表服務(wù)12</p><p> 3.1.10全文搜索功能的增強(qiáng)12</p><p> 3.2C#與ADO.NET12</p><p> 3.2.1
16、; C#中的數(shù)據(jù)庫訪問12</p><p> 3.2.2 數(shù)據(jù)綁定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數(shù)據(jù)操縱語句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關(guān)鍵詞26</p><p> 3.3.14Top關(guān)鍵詞26</p><p> 3.3.15多表查詢27</p>
19、;<p> 3.3.16多重查詢27</p><p> 3.3.17EXISTS關(guān)鍵詞27</p><p> 4系統(tǒng)需求分析27</p><p> 4.1系統(tǒng)流程圖如下27</p><p><b> 5 致謝49</b></p><p> 附錄F 各模塊實現(xiàn)的
20、主要源代碼50</p><p> F1.1登錄模塊的設(shè)計與實現(xiàn)的主要代碼50</p><p><b> }51</b></p><p> F1.2登陸實體類:51</p><p> F1.3 員工管理模塊的設(shè)計與實現(xiàn)的主要代碼52</p><p> F1.3.1員工管理實現(xiàn)的
21、主要代碼:52</p><p> F1.3.2 部門管理實現(xiàn)主要代碼:53</p><p><b> }55</b></p><p> F1.3.3工資管理主要代碼:55</p><p><b> }59</b></p><p> F1.3.4考勤信息設(shè)
22、計與實現(xiàn)主要代碼:59</p><p><b> }62</b></p><p> F1.4 數(shù)據(jù)訪問類: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è)的形象,因而人事管理機(jī)制的好壞,影響一個企業(yè)的成敗。 員工的檔案管理是企業(yè)人事管理的基礎(chǔ),在企業(yè)員工普遍流失的今天,一個準(zhǔn)確而及時的人事管理系統(tǒng),有利于人事部門對員工流動進(jìn)行分析、編制,為企業(yè)所需人員提供了保障。</p><p> 人力資源部那些重復(fù)的,事務(wù)性的工作交給HRP(Human Resource Planning,人力資源管理系統(tǒng))來解決,可以省去用戶以
25、往人力資源管理工作的繁瑣、枯燥;用領(lǐng)先的人力資源管理理念,把人力資源管理的作業(yè)流程控制和戰(zhàn)略規(guī)劃設(shè)計巧妙地集合于一體;系統(tǒng)重點涉及到人力資源管理工作中的薪資、考勤、績效、調(diào)動、基本信息、用戶管理以及用戶切換等方面,并有綜合的系統(tǒng)安全設(shè)置、報表綜合管理模塊??梢院芎玫貫橛脩舻娜肆Y源管理部門在對員工的成本管理、知識管理、績效管理等綜合管理給予幫助。以每個月中所發(fā)工資為例,其中包括考勤、人事信息變動、獎懲、遲到和曠工對本月的薪資計算都有影響
26、,為了及時的計算發(fā)放工資往往要提前一個星期花費大量時間,加班加點才能及時完成,而這樣做無論從工作效率還是準(zhǔn)確度方面,都不允許,而且還浪費大量的人力財力。如果改用HRP管理做到高效、高精度,還可以減少管理時帶來的一些繁瑣的工作,節(jié)約管理帶來的開支。</p><p> 1.2 人事管理系統(tǒng)發(fā)展趨勢</p><p><b> 1.2.1趨勢</b></p>
27、<p> 人力資源管理系統(tǒng)主導(dǎo)21世紀(jì),無論是發(fā)達(dá)國家還是發(fā)展中國家,對人力資源的戰(zhàn)略性意義都有了深刻的認(rèn)識,并開始付諸行動。世界公認(rèn),21世紀(jì)將是人力資源的世紀(jì);人力資源問題將主導(dǎo)整個21世紀(jì)甚至更為遙遠(yuǎn),這種狀況的變化起因于競爭壓力。目前,世界經(jīng)濟(jì)趨向全球化。世界經(jīng)濟(jì)的全球化過程和國家的開放過程,要求組織的管理部門降低管理成本以減少競爭壓力和增強(qiáng)競爭能力。對于不同的組織,人力資源成本在總成本中的比例是不一樣的。<
28、;/p><p><b> 1.2.2革新</b></p><p> 無論是現(xiàn)在還是將來,工業(yè)的發(fā)展越來越多地取決于科學(xué)和技術(shù)、知識與技能。高新科技產(chǎn)業(yè)更是如此。這不僅要求員工尤其是技術(shù)人員掌握新的科學(xué)知識和技術(shù)能力,而且更重要的在于要求員工深入而快捷地掌握和應(yīng)用這些知識和技能。這就導(dǎo)致了兩個問題。第一,隨著這種技術(shù)革新的發(fā)展和知識更新速度的加快,人們有更多的職業(yè)選擇機(jī)
29、會。第二,伴隨著這種發(fā)展以及職業(yè)選擇機(jī)會的增多,人力資源管理活動和頻繁程度加劇;而且這種活動對科學(xué)技術(shù)的要求與它的反應(yīng)程度也更高了,進(jìn)而提高了人力資源成本。</p><p><b> 1.3 系統(tǒng)調(diào)研</b></p><p> 1.3.1 社會可行性分析</p><p> 隨著計算機(jī)的發(fā)展與普及,以及互聯(lián)網(wǎng)技術(shù)的擴(kuò)展,日常勞資人事管理必將
30、實現(xiàn)無紙化辦公,并且加入到公司內(nèi)部的Intranet或者是Internet上去,實現(xiàn)數(shù)據(jù)的共享,這樣有利于勞資人事信息在單位內(nèi)部的查詢,提高了數(shù)據(jù)資源的利用,并且能及時的得到更新,不需要象過去那樣浪費大量的人力物力去進(jìn)行抄寫,提高了工作的效率</p><p> 1.3.2 技術(shù)可行性分析</p><p> Visual Studio.NET提供了一個統(tǒng)一的、緊密集成的可視化編程環(huán)境,簡
31、化了開發(fā)應(yīng)用程序的過程,縮短了實用方法的時間。利用Visual Studio.NET,可以非常輕松地創(chuàng)建具有自動伸縮能力的可靠的應(yīng)用程序和組件。而且微軟的優(yōu)秀成果c#語言保持了c/c++所特有的強(qiáng)大功能和控制能力。與c++十分相似的模型和語法,具有與COM+服務(wù)完全的交互性和完全支持能力,能夠輕松地遷移現(xiàn)有的代碼。數(shù)據(jù)庫方面SQL2005已經(jīng)可以滿足中小型企業(yè)的數(shù)據(jù)要求,甚至有些大型企業(yè)都可以達(dá)到要求。如今進(jìn)算計普及程度日益推廣,計算機(jī)
32、配置日新月異,能承載此系統(tǒng)的機(jī)器就如辦公的機(jī)器都可以達(dá)到要求。所以說本系統(tǒng)具有技術(shù)可行性。</p><p> 1.3.3 經(jīng)濟(jì)可行性分析</p><p> 采用傳統(tǒng)的手工輸入方法,不僅工作繁瑣而且需要人力輸入多,記錄容易出錯,那樣產(chǎn)生了成本高,效果差的弊病,對于一個企業(yè)的資料庫建立是十分困難和麻煩的。而采用這種系統(tǒng)所發(fā)費的成本,精力都遠(yuǎn)遠(yuǎn)低于手工,并且實用十分方便,更新也簡易,每個部門
33、只需一個人統(tǒng)一管理,對企業(yè)實現(xiàn)辦公無紙化能起到很大的作用。所以此系統(tǒng)經(jīng)濟(jì)可行性也具備了。</p><p> 1.3.4 管理可行性分析</p><p> 本系統(tǒng)采用了系統(tǒng)數(shù)據(jù)備份、恢復(fù)的功能,而且界面層次分明,一目了然,加上設(shè)計方面加入了人性化元素。管理此系統(tǒng)并不難,易學(xué)易會。</p><p><b> 1.4 研究內(nèi)容</b></
34、p><p> 本論文共分為5章。第1章緒論,介紹了本課題的應(yīng)用目的和意義、人事管理系統(tǒng)、可行性分析和研究內(nèi)容。第2章介紹了開發(fā)工具及其特點、數(shù)據(jù)庫技術(shù)。第3章主要介紹了系統(tǒng)的設(shè)計與分析,包括總體設(shè)計、數(shù)據(jù)庫設(shè)計、詳細(xì)設(shè)計等。第4章主要介紹系統(tǒng)實現(xiàn),即系統(tǒng)各種模塊的功能實現(xiàn)。第5章為本課題完成成果和發(fā)展期望的總結(jié)。</p><p> 本論文主要利用C#可視化技術(shù)及SQL數(shù)據(jù)庫開發(fā)技術(shù),對員工
35、管理與考勤管理系統(tǒng)進(jìn)行系統(tǒng)化、細(xì)致化和完善化的分析研究。</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ā)網(wǎng)絡(luò)應(yīng)用程序的過程,縮短學(xué)習(xí)使用方法
36、的時間。它提供了一種新的語言——C#。通過共享的HTML、XML和樣式單編輯器,用戶可以輕松地借助包括C#在內(nèi)的任何一種Visual Studio語言來開發(fā)網(wǎng)絡(luò)應(yīng)用程序。2.1.2 提供對各種網(wǎng)絡(luò)應(yīng)用程序的快速設(shè)計能力</p><p> 借助Web Form,用戶可以用他們在開發(fā)基于窗體的桌面應(yīng)用程序時所使用的技巧來創(chuàng)建跨平臺、跨瀏覽器的網(wǎng)絡(luò)應(yīng)用程序。2.1.3 利用XML和Web Service來簡化分布
37、式計算</p><p> Web Service借助標(biāo)準(zhǔn)的Intemet協(xié)議在網(wǎng)絡(luò)上調(diào)用商務(wù)邏輯。HTTP被作為Web Service傳輸?shù)幕A(chǔ)協(xié)議,該協(xié)議使得對功能的請求能夠穿越各種團(tuán)體所使用的防火墻。XML被用來對上述功能請求的參數(shù)進(jìn)行格式統(tǒng)一,從而使這些請求能夠使用于所有的軟件和硬件。這樣使得對Web Service的訪問可以通過任何一種語言、使用任何一種組件模型在任何一種操作系統(tǒng)上實現(xiàn)。2.1.4快速
38、構(gòu)建中間層商務(wù)組件</p><p> Visual Studio的一個核心目標(biāo)就是要為基于服務(wù)器的應(yīng)用程序提供應(yīng)用程序快速部署工具。利用Visual Studio.NET創(chuàng)建的組件將為您的商務(wù)運作提供足夠的功能和伸縮性。2.1.5構(gòu)建可靠的可伸縮解決方案</p><p> 利用Visual Studio.NET,用戶可以非常輕松地創(chuàng)建具有自動伸縮能力的可靠的應(yīng)用程序和組件。2.2
39、C#技術(shù)概述</p><p> C#在帶來對應(yīng)用程序的快速開發(fā)能力的同時,并沒有犧牲C與C++程序員所關(guān)心的各種特性。它忠實地繼承了C和C++的優(yōu)點。如果你對C或C++有所了解,你會發(fā)現(xiàn)它是那樣的熟悉。即使你是一位新手,C#也不會給你帶來任何其它的麻煩,快速應(yīng)用程序開發(fā)(Rapid Application Development,RAD)的思想與簡潔的語法將會使你迅速成為一名熟練的開發(fā)人員。</p>
40、<p> C#是專門為.NET應(yīng)用而開發(fā)出的語言。這從根本上保證了C#與.NET框架的完美結(jié)合。在.NET運行庫的支持下,.NET框架的各種優(yōu)點在C#中表現(xiàn)得淋漓盡致。C#的一些突出的特點</p><p><b> ●簡潔的語法</b></p><p> ●精心地面向?qū)ο笤O(shè)計</p><p> ●與Web的緊密結(jié)合<
41、/p><p> ●完整的安全性與錯誤處理</p><p><b> ●版本處理技術(shù)</b></p><p><b> ●靈活性與兼容性</b></p><p> 2.2.1簡潔的語法</p><p> 在缺省的情況下,C#的代碼在.NET框架提供的“可操縱”環(huán)境下運行,
42、不允許直接地內(nèi)存操作。它所帶來的最大的特色是沒有了指針。與此相關(guān)的是,那些在C++中被瘋狂使用的操作符(例如:“::”、“->”和“.,”)已經(jīng)不再出現(xiàn)。C#只支持一個“.”,對于我們來說,現(xiàn)在需要理解的一切僅僅是名字的嵌套而已。</p><p> C#用真正的關(guān)鍵字換掉了那些把活動模板庫(Active Template Library,ALT)和COM搞得亂糟糟的偽關(guān)鍵字,如OLE_COLOR、BOOL
43、、VARIANT_BOOL、DISPID_XXXXX等等。每種C#操作符在.NET類庫中都有了新名字。</p><p> 語法中的冗余是C++中的常見的問題,比如"const"和"#define"、各種各樣的字符類型等等。C#對此進(jìn)行了簡化,只保留了常見的形式,而別的冗余形式從它的語法結(jié)構(gòu)中被清除了出去。</p><p> 2.2.2精心地面向?qū)?/p>
44、象設(shè)計</p><p> 從Smalltalk開始,面向?qū)ο蟮脑掝}就始終纏繞著任何一種現(xiàn)代程序設(shè)計語言。的確,C#具有面向?qū)ο蟮恼Z言所應(yīng)有的一切特性:封裝、繼承與多態(tài)性,這并不出奇。然而,通過精心地面向?qū)ο笤O(shè)計,從高級商業(yè)對象到系統(tǒng)級應(yīng)用,C#建造廣泛組件的絕對選擇。在C#的類型系統(tǒng)中,每種類型都可以看作一個對象。C#提供了一個叫做裝箱(boxing)與拆箱(unboxing)的機(jī)制來完成這種操作,而不給使用者
45、帶來麻煩,這在以后的章節(jié)中將進(jìn)行更為詳細(xì)的介紹。</p><p> C#只允許單繼承,即一個類不會有多個基類,從而避免了類型定義的混亂。在后面的學(xué)習(xí)中你很快會發(fā)現(xiàn),C#中沒有了全局函數(shù),沒有了全局變量,也沒有了全局常數(shù)。一切的一切,都必須封裝在一個類之中。你的代碼將具有更好的可讀性,并且減少了發(fā)生命名沖突的可能。整個C#的類模型是建立在.NET虛擬對象系統(tǒng)(Visual Object System,VOS)的基
46、礎(chǔ)之上,其對象模型是.NET基礎(chǔ)架構(gòu)的一部分,而不再是其本身的組成部分。在下面將會談到,這樣做的另一個好處是兼容性。</p><p> 借助于從VB中得來的豐富的RAD經(jīng)驗,C#具備了良好的開發(fā)環(huán)境。結(jié)合自身強(qiáng)大的面向?qū)ο蠊δ?,C#使得開發(fā)人員的生產(chǎn)效率得到極大的提高。對于公司而言,軟件開發(fā)周期的縮短將能使它們更好應(yīng)付網(wǎng)絡(luò)經(jīng)濟(jì)的競爭。在功能與效率的杠桿上人們終于找到了支點。</p><p&g
47、t; 2.2.3與Web的緊密結(jié)合</p><p> .NET中新的應(yīng)用程序開發(fā)模型意味著越來越多的解決方案需要與Web標(biāo)準(zhǔn)相統(tǒng)一,例如超文本標(biāo)記語言(Hypertext Markup Language,HTML)和XML。由于歷史的原因,現(xiàn)存的一些開發(fā)工具不能與Web緊密地結(jié)合。SOAP的使用使得C#克服了這一缺陷,大規(guī)模深層次的分布式開發(fā)從此成為可能。</p><p> 由于有了
48、Web服務(wù)框架的幫助,對程序員來說,網(wǎng)絡(luò)服務(wù)看起來就象是C#的本地對象。程序員們能夠利用他們已有的面向?qū)ο蟮闹R與技巧開發(fā)Web服務(wù)。僅需要使用簡單的C#語言結(jié)構(gòu),C#組件將能夠方便地為Web服務(wù),并允許它們通過Internet被運行在任何操作系統(tǒng)上的任何語言所調(diào)用。舉個例子,XML已經(jīng)成為網(wǎng)絡(luò)中數(shù)據(jù)結(jié)構(gòu)傳遞的標(biāo)準(zhǔn),為了提高效率,C#允許直接將XML數(shù)據(jù)映射成為結(jié)構(gòu)。這樣就可以有效的處理各種數(shù)據(jù)。</p><p>
49、; 2.2.4完整的安全性與錯誤處理</p><p> 語言的安全性與錯誤處理能力,是衡量一種語言是否優(yōu)秀的重要依據(jù)。任何人都會犯錯誤,即使是最熟練的程序員也不例外:忘記變量的初始化,對不屬于自己管理范圍的內(nèi)存空間進(jìn)行修改,這些錯誤常常產(chǎn)生難以預(yù)見的后果。一旦這樣的軟件被投入使用,尋找與改正這些簡單錯誤的代價將會是讓人無法承受的。C#的先進(jìn)設(shè)計思想可以消除軟件開發(fā)中的許多常見錯誤,并提供了包括類型安全在內(nèi)的完
50、整的安全性能。為了減少開發(fā)中的錯誤,C#會幫助開發(fā)者通過更少的代碼完成相同的功能,這不但減輕了編程人員的工作量,同時更有效地避免了錯誤的發(fā)生。</p><p> .NET運行庫提供了代碼訪問安全特性,它允許管理員和用戶根據(jù)代碼的ID來配置安全等級。在缺省情況下,從Internet和Intranet下載的代碼都不允許訪問任何本地文件和資源。比方說,一個在網(wǎng)絡(luò)上的共享目錄中運行的程序,如果它要訪問本地的一些資源,那
51、么異常將被觸發(fā),它將會無情地被異常扔出去,若拷貝到本地硬盤上運行則一切正常。內(nèi)存管理中的垃圾收集機(jī)制減輕了開發(fā)人員對內(nèi)存管理的負(fù)擔(dān)。.NET平臺提供的垃圾收集器(Garbage Collection,GC)將負(fù)責(zé)資源的釋放與對象撤銷時的內(nèi)存清理工作。</p><p> 變量類型是安全的。C#中不能使用未初始化的變量,對象的成員變量由編譯器負(fù)責(zé)將其置為零,當(dāng)局部變量未經(jīng)初始化而被使用時,編譯器將做出提醒;C#不支
52、持不安全的指向,不能將整數(shù)指向引用類型,例如對象,當(dāng)進(jìn)行下行指向時,C#將自動驗證指向的有效性;C#中提供了邊界檢查與溢出檢查功能。</p><p> 2.2.5版本處理技術(shù)</p><p> C#提供內(nèi)置的版本支持來減少開發(fā)費用,使用C#將會使開發(fā)人員更加輕易地開發(fā)和維護(hù)各種商業(yè)用戶。升級軟件系統(tǒng)中的組件(模塊)是一件容易產(chǎn)生錯誤的工作。在代碼修改過程中可能對現(xiàn)存的軟件產(chǎn)生影響,很有
53、可能導(dǎo)致程序的崩潰。為了幫助開發(fā)人員處理這些問題,C#在語言中內(nèi)置了版本控制功能。例如:函數(shù)重載必須被顯式聲明,而不會象在C++或java中經(jīng)常發(fā)生的那樣不經(jīng)意地被進(jìn)行,這可以防止代碼級錯誤和保留版本化的特性。另一個相關(guān)的特性是接口和接口繼承的支持。這些特性可以保證復(fù)雜的軟件可以被方便地開發(fā)和升級。</p><p> 2.2.6靈活性和兼容性</p><p> 在簡化語法的同時,C#并
54、沒有失去靈活性。盡管它不是一種無限制語言,比如:它不能用來開發(fā)硬件驅(qū)動程序,在默認(rèn)的狀態(tài)下沒有指針等等,但是,在學(xué)習(xí)過程中你將發(fā)現(xiàn),它仍然是那樣的靈巧。</p><p> 如果需要,C#允許你將某些類或者類的某些方法聲明為非安全的。這樣一來,你將能夠使用指針、結(jié)構(gòu)和靜態(tài)數(shù)組,并且調(diào)用這些非安全代碼不會帶來任何其它的問題。此外,它還提供了一個另外的東西(這樣的稱呼多少有些不敬)來模擬指針的功能--delegate
55、s,代表。再舉一個例子:C#不支持類的多繼承,但是通過對接口的繼承,你將獲得這一功能。</p><p><b> 2.2.7安全性</b></p><p> 正是由于其靈活性,C#允許與C風(fēng)格的需要傳遞指針型參數(shù)的API進(jìn)行交互操作,DLL的任何入口點都可以在程序中進(jìn)行訪問。C#遵守.NET公用語言規(guī)范(Common Language Specification,
56、CLS),從而保證了C#組件與其它語言組件間的互操作性。元數(shù)據(jù)(Metadata)概念的引入既保證了兼容性,又實現(xiàn)了類型安全。</p><p> 3.1SQL2005主要特點</p><p> 3.1.1.NET框架</p><p> 使用SQL Server2005,開發(fā)人員通過使用相似的語言,例如微軟的VisualC#.NET和微軟的VisualBasic
57、,將能夠創(chuàng)立數(shù)據(jù)庫對象。開發(fā)人員還將能夠建立兩個新的對象——用戶定義的類和集合。 </p><p> 3.1.2XML技術(shù) </p><p> 在使用本地網(wǎng)絡(luò)和互聯(lián)網(wǎng)的情況下,在不同應(yīng)用軟件之間散步數(shù)據(jù)的時候,可擴(kuò)展標(biāo)記語言(XML)是一個重要的標(biāo)準(zhǔn)。SQL Server2005將會自身支持存儲和查詢可擴(kuò)展標(biāo)記語言文件。 </p><p> 3.1.3ADO.
58、NET2.0版本 </p><p> 從對SQL類的新的支持,到多活動結(jié)果集(MARS),SQL Server2005中的ADO.NET將推動數(shù)據(jù)集的存取和操縱,實現(xiàn)更大的可升級性和靈活性。 </p><p> 3.1.4增強(qiáng)的安全性 </p><p> SQL Server2005中的新安全模式將用戶和對象分開,提供fine-grainaccess存取、并允
59、許對數(shù)據(jù)存取進(jìn)行更大的控制。另外,所有系統(tǒng)表格將作為視圖得到實施,對數(shù)據(jù)庫系統(tǒng)對象進(jìn)行了更大程度的控制。 </p><p> 3.1.5Transact-SQL的增強(qiáng)性能 </p><p> SQL Server2005為開發(fā)可升級的數(shù)據(jù)庫應(yīng)用軟件,提供了新的語言功能。這些增強(qiáng)的性能包括處理錯誤、遞歸查詢功能、關(guān)系運算符PIVOT,APPLY,ROW_NUMBER和其他數(shù)據(jù)列排行功能,
60、等等。 </p><p> 3.1.6SQL服務(wù)中介 </p><p> SQL服務(wù)中介將為大型、營業(yè)范圍內(nèi)的應(yīng)用軟件,提供一個分布式的、異步應(yīng)用框架。 </p><p> 3.1.7通告服務(wù) </p><p> 通告服務(wù)使得業(yè)務(wù)可以建立豐富的通知應(yīng)用軟件,向任何設(shè)備,提供個人化的和及時的信息,例如股市警報、新聞訂閱、包裹遞送警報、航
61、空公司票價等。在SQL Server2005中,通告服務(wù)和其他技術(shù)更加緊密地融合在了一起,這些技術(shù)包括分析服務(wù)、SQLServerManagementStudio。 </p><p> 3.1.8Web服務(wù) </p><p> 使用SQL Server2005,開發(fā)人員將能夠在數(shù)據(jù)庫層開發(fā)Web服務(wù),將SQL Server當(dāng)作一個超文本傳輸協(xié)議(HTTP)偵聽器,并且為網(wǎng)絡(luò)服務(wù)中心應(yīng)用
62、軟件提供一個新型的數(shù)據(jù)存取功能。 </p><p> 3.1.9報表服務(wù) </p><p> 利用SQL Server2005,報表服務(wù)可以提供報表控制,可以通過VisualStudio2005發(fā)行。 </p><p> 3.1.10全文搜索功能的增強(qiáng) </p><p> SQL Server2005將支持豐富的全文應(yīng)用軟件。服務(wù)器的
63、編目功能將得到增強(qiáng),對編目的對象提供更大的靈活性。查詢性能和可升級性將大幅得到改進(jìn),同時新的管理工具將為有關(guān)全文功能的運行,提供更深入的了解。</p><p> 3.2C#與ADO.NET</p><p> 3.2.1 C#中的數(shù)據(jù)庫訪問</p><p> 用.NET框架編寫的(當(dāng)然也包括用C#編寫的應(yīng)用程序)應(yīng)用程序需要訪問數(shù)據(jù)庫時,將使用ADO
64、.NET來實現(xiàn)數(shù)據(jù)庫訪問。數(shù)據(jù)綁定是一種非常有用的訪問數(shù)據(jù)庫的方法,能夠減少需要編寫的代碼量。很多簡單任務(wù)可以通過純粹聲明式代碼來完成。</p><p> <1> ADO.NET</p><p> ADO.NET是微軟的數(shù)據(jù)訪問框架的最新產(chǎn)物,它是.NET框架的一部分。在ADO.NET之前,程序員在ASP(Active Server Pages)或Visual Basic中
65、使用ADO(AtiveX Data Objects),這是一組COM(Component Object Model,組件對象模型)組件,它通過一個易于使用的封裝類提供對底層數(shù)據(jù)訪問代碼的訪問。雖然ADO大大簡化了數(shù)據(jù)庫訪問,但更高級的程序員(特別是C++程序員)通常更喜歡使用更直接、更快的代碼,如OLE DB(Object Linking and Embedding for Databases)代碼庫。</p><p
66、> ADO.NET比ADO的功能更強(qiáng)大。它是在.NET代碼中訪問數(shù)據(jù)庫的最好工具。</p><p> .NET框架中的ADO.NET類型(在System.Data命名空間及其子空間下的所有類型)包括那些為訪問SQL Server、OLE DB、ODBC和Oracle數(shù)據(jù)庫而優(yōu)化的類型。它們都是基于通用類的,因此使用ADO.NET訪問不同的DBMS是相似的。</p><p> A
67、DO.NET類型實現(xiàn)兩個主要的功能。</p><p> ● 數(shù)據(jù)訪問:用于訪問數(shù)據(jù)庫中數(shù)據(jù)和操作數(shù)據(jù)庫的類型;</p><p> ● 數(shù)據(jù)表示:用于包含數(shù)據(jù)庫數(shù)據(jù)(如數(shù)據(jù)表)的類型。</p><p> 這兩種類型之間聯(lián)系密切,在數(shù)據(jù)庫開發(fā)中兩種類型都會用到。嚴(yán)格地說,可以只用一種數(shù)據(jù)庫訪問
68、類型。然而,如果使用數(shù)據(jù)訪問類型來填充數(shù)據(jù)表示類型將節(jié)省大量工作。 </p><p> ADO.NET包含7個重要的基類,其中4個是數(shù)據(jù)訪問類:</p><p> ● DbConnection;</p><p> ● DbCommand;</p><p> ● DbDataReader;</p><p&g
69、t; ● DbDataAdapter。</p><p> 其他3個類是數(shù)據(jù)表示類:</p><p> ● DataTable;</p><p> ● DataRelation;</p><p> ● DataSet。</p><p> DataTable類使用了其他一些重要的類:DataColum
70、、Constraint和DataRow,本節(jié)也將介紹它們。</p><p> 1.DbConnection</p><p> DbConnection類提供與數(shù)據(jù)庫的連接。創(chuàng)建DbConnection對象時,應(yīng)提供與DBMS通信所需的所有信息,如數(shù)據(jù)庫的位置、用于認(rèn)證的用戶名和密碼以及要訪問的DBMS中的數(shù)據(jù)庫。</p><p> 所有其他ADO.NET數(shù)據(jù)訪
71、問類都依靠DbConnection與數(shù)據(jù)庫進(jìn)行通信。DbConnection類的扮演角色如圖2.1所示。</p><p> 圖3.2.1 DbConnection類</p><p> 在從DbConnection派生而來的類中,到數(shù)據(jù)庫的連接都是由連接字符串定義的,該字符串存儲在屬性DbConnection.ConnectionString中。</p><
72、;p> 數(shù)據(jù)庫連接應(yīng)只在傳輸數(shù)據(jù)時才打開,因此創(chuàng)建DbConnection實例時并不自動連接到數(shù)據(jù)庫。DbConnection類定義了Open()方法和Close()方法,用于控制連接何時可用。很多其他的ADO.NET類也能控制連接狀態(tài),例如,有些類在完成操作后關(guān)閉它們使用的連接。</p><p> DbConnection對象還能參與事務(wù)??捎肈bConnection.BeginTransaction
73、()方法開始事務(wù),或使用DbConnection.EnlistTransaction()作為已有事務(wù)的一部分執(zhí)行操作。</p><p> 訪問SQL Server或SQL Server速成版中的數(shù)據(jù)時,使用SqlConnection,該類是DbConnection的子類。一般來說,DbConnection和SqlConnection及其他子類都稱為連接類。</p><p> 2.DbC
74、ommand</p><p> DbCommand類提供與數(shù)據(jù)庫交互的主要方法??梢杂肈bCommand對象來執(zhí)行SQL語句、運行存儲過程等。DbCommand及其派生類稱為命令類。</p><p> 大部分時候并不直接使用DbCommand,而是用封裝了DbCommand的其他對象。但有時候需要對數(shù)據(jù)庫通信進(jìn)行更多的控制,這時就可以使用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來訪問底層的連接或事務(wù)。</p><p> 要注意,DbCommand對象可能有參數(shù)化的命令字符串,命令中的參數(shù)來自類型為DbCommand. Parameters集合的屬性。這與直接在命令字符串中輸入?yún)?shù)相比有很多優(yōu)點,在本書后面部分將會看到。</p><p> 要使用DbCommand對象執(zhí)行命令,有三種選擇,這取決于要執(zhí)行的命令是
77、什么。有些命令不返回結(jié)果,這種情況下可以用DbCommand.ExecuteNonQuery()方法;有些命令返回一個結(jié)果,這時可用DbCommand.ExecuteScalar()方法;最后,有很多命令返回多行數(shù)據(jù),這時可用DbCommand. ExecuteReader()方法,它將返回一個DbDataReader對象(下一小節(jié)將解釋)。</p><p> SQL Server的DbCommand版本名為S
78、qlCommand。它有自己的一些特殊方法,如SqlCommand. ExecuteXmlReader()方法,它直接以XML格式返回結(jié)果。</p><p> 3.DbDataReader</p><p> 使用DbDataReader類可以從結(jié)果集中讀取數(shù)據(jù),如從執(zhí)行存儲在命令對象中的命令生成的結(jié)果集中讀取數(shù)據(jù)。該類經(jīng)過高度優(yōu)化,可以很快地訪問數(shù)據(jù)庫中的數(shù)據(jù)。然而,這種優(yōu)化也有些副作
79、用,例如,只能以串行方式一次讀取一行數(shù)據(jù)。不能讀完兩行后再返回去讀取第一行。通常,可以用DbDataReader對象(更確切地說,是數(shù)據(jù)閱讀器的子類對象)來提取要使用的行數(shù)據(jù),并將其存儲在其他對象中。例如,可以讀取一個結(jié)果集中的每行,將其存儲到在自定義集合或泛型列表對象中的自定義類中。</p><p> 與命令對象一樣,很多時候數(shù)據(jù)閱讀器對象是由ADO.NET命名空間下的其他類使用的,用戶不必直接使用它們。&l
80、t;/p><p> 圖3.2.3說明了如何在數(shù)據(jù)庫應(yīng)用程序中使用數(shù)據(jù)閱讀器。</p><p> 要使用數(shù)據(jù)閱讀器對象,首先必須調(diào)用DbDataReader.Read()方法選擇結(jié)果集中的第一行??刹粩嗾{(diào)用該方法來移動數(shù)據(jù)閱讀器,使數(shù)據(jù)閱讀器像結(jié)果集中的游標(biāo)一樣總是指向一行。獲取一行時,Read()方法返回true;否則返回false—如當(dāng)所有行都已經(jīng)讀完時。也可以用DbDataReader
81、. HasRows屬性來判斷結(jié)果集中是否還有其他行。</p><p> 圖3.2.4 DbDataReader類</p><p> 很多屬性和方法可用于檢查當(dāng)前選中的行。DbDataReader.FieldCount查看當(dāng)前行包含多少列,并用DbDataReader的重載索引器訪問各列。如果知道要訪問的列名,可用基于字符串的索引器來獲得列值,也可以使用基于整數(shù)的索引器通過位
82、置獲得列。在這兩種情況下,這種方法都將返回object值,可將其轉(zhuǎn)化為其他類型的數(shù)據(jù)。</p><p> 也可以使用DbDataReader提供的多個方法直接獲得類型化數(shù)據(jù),如GetString()和GetInt32()分別將指定列以string和int值返回,列通過其索引選擇。要使用這些方法獲得值類型,必須首先使用DbDataReader.IsDBNull檢查空值;否則,空值將引發(fā)異常。檢查空值是必須的,因為
83、不管什么數(shù)據(jù)庫類型都可以為空。這與.NET中的值類型不同,可為空的值類型(如int)在這種上下文環(huán)境中是不受支持的。</p><p> DbDataReader也能夠獲得關(guān)于它包含的數(shù)據(jù)的元信息—使用DbDataReader.GetSchema Table()方法,這樣就可以知道列的名稱、數(shù)據(jù)類型和其他信息,如列是否包含空值。</p><p> 與前面的其他類一樣,也有專門用于SQL
84、Server的數(shù)據(jù)閱讀器類,這就是SqlDataReader,本書將使用該類。該類繼承DbDataReader,提供將數(shù)據(jù)讀取為本地SQL類型的方法,這樣就能夠避免空類型的問題。這些類型包含在System.Data.Sqltypes命名空間中,是可為空的;如SqlDouble和SqlInt32。雖然這些類型也可以像標(biāo)準(zhǔn)的值類型那樣進(jìn)行操作,但它們實際上是引用類型。</p><p> 4.DbDataAdapte
85、r</p><p> 在ADO.NET的核心數(shù)據(jù)訪問類中,最后一個是DbDataAdapter類。它比前面介紹過的類型要復(fù)雜得多,設(shè)計該類的目的只有一個:減少存儲在數(shù)據(jù)集對象中的數(shù)據(jù)與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交換時的干擾。與前面的類一樣,DbDataAdapter類也有很多派生類,它們統(tǒng)稱為數(shù)據(jù)適配器類。</p><p> 稍后將詳細(xì)解釋什么是數(shù)據(jù)集對象,簡單地說,它們是能夠以.NET對象的形來
86、表示數(shù)據(jù)庫中數(shù)據(jù)的對象。數(shù)據(jù)集對象可以包含整個表或多個表的數(shù)據(jù)。數(shù)據(jù)適配器既可以將數(shù)據(jù)庫中的數(shù)據(jù)傳輸給包含在數(shù)據(jù)集中的表,也可以將數(shù)據(jù)集中的數(shù)據(jù)傳輸?shù)綌?shù)據(jù)庫中。</p><p> 這個功能由命令對象和數(shù)據(jù)閱讀器對象執(zhí)行,因此大部分時候用戶不必考慮它。然而,DbDataAdapter最重要的(也是最有用的)特性之一是,它用于傳輸數(shù)據(jù)的命令對象被暴露出來,因此可以根據(jù)需要對它們進(jìn)行定制。</p>&l
87、t;p> 圖2.4說明了DbDataAdapter類的工作原理,包括它包含的命令對象。</p><p> 圖3.2.4 DbDataAdapter類</p><p> 數(shù)據(jù)適配器使用的4個命令對象存儲在4個屬性中:SelectCommand(用于查詢數(shù)據(jù))、InsertCommand(用于添加數(shù)據(jù))、UpdateCommand(用于編輯數(shù)據(jù))和DeleteComma
88、nd(用于刪除數(shù)據(jù))。要使用適配器,并不一定全部用到這4個屬性,例如,可以只用適配器來查詢數(shù)據(jù)。另外,.NET框架可以根據(jù)其他命令的值推斷出命令的值,例如,可以根據(jù)查詢命令來生成更新、插入和刪除命令。然而,這種自動生成的命令的效率可能不如手工提供的高。本書稍后還會討論這個問題。</p><p> 數(shù)據(jù)適配器中最常用的兩個方法是DbDataAdapter.Fill()和DbDataAdapter.Update()
89、。Fill()方法從數(shù)據(jù)庫中獲取數(shù)據(jù);Update()方法更新數(shù)據(jù)庫中的數(shù)據(jù)。這兩個方法都可以用于數(shù)據(jù)集或單個數(shù)據(jù)表。另外,可以使用DbDataAdapter.FillSchema()獲取架構(gòu)數(shù)據(jù)。</p><p> SQL Server中的DbDataAdapter版本是Sql DbDataAdapter。</p><p> 5.DataTable</p><p&
90、gt; DataTable是ADO.NET提供的第一個數(shù)據(jù)表示類。與數(shù)據(jù)訪問類不同,數(shù)據(jù)表示類沒有專門用于特定數(shù)據(jù)庫管理系統(tǒng)(如SQL Server)的子類,它們獨立于平臺。實際上,如果需要的話,數(shù)據(jù)表示類完全可以獨立于數(shù)據(jù)庫使用,它們只是存儲數(shù)據(jù)的一種方便的方法。</p><p> DataTable類用于存儲(讀者可能對此感到不解)數(shù)據(jù)表。在繼續(xù)討論這個類之前需要澄清一件事情:以DataTable對象存儲
91、的表不一定要映射到數(shù)據(jù)庫中的表。DataTable可能包含表中數(shù)據(jù)的一個子集,該子集可能只包含數(shù)據(jù)庫表的部分行、部分列,可能是由數(shù)據(jù)庫中多個表組合而成的數(shù)據(jù),還可能是所有這些的組合,這取決于用于獲得數(shù)據(jù)的查詢語句。通常,DataTable與數(shù)據(jù)庫中的表匹配,但仍然要知道上面提到的事實。</p><p> 圖3.2.5說明了DataTable與其他ADO.NET對象之間的關(guān)系。</p><p&
92、gt; 圖2.5 DataTable</p><p> 要獲得完全填充的DataTable,可使用數(shù)據(jù)適配器。有包含數(shù)據(jù)的DataTable后,就可以訪問行、列、約束和它包含的其他信息。這些信息可以通過命名恰切的屬性來訪問,包括Rows、Columns和Contraints等。</p><p> 上面提到的3個屬性都返回一個集合類(DataRowCollection、Da
93、taColumnCollection和ConstaintCollection)對象。與其他集合類一樣,這些類可用于在它們包含的對象集合中導(dǎo)航,添加或刪除項等。稍后將介紹這些集合包含的類。</p><p> DataTable類另一個非常重要的方面是,如何處理數(shù)據(jù)修改。例如,如果刪除DataTable中的一行,數(shù)據(jù)適配器如何知道在數(shù)據(jù)庫中刪除對應(yīng)的數(shù)據(jù)?DataTable對象記錄了對原始數(shù)據(jù)的修改,而不只是數(shù)據(jù)的
94、當(dāng)前狀態(tài)。從DataTable中刪除一行并不會真的刪除這些數(shù)據(jù),而只是數(shù)據(jù)被標(biāo)記為已刪除。在DataTable對象的消費方(如應(yīng)用程序)看來,就像數(shù)據(jù)已被刪除,但實際上并沒有刪除。</p><p> 任何時候都可以使用GetChanges()方法獲得關(guān)于對DataTable對象所做的修改列表(以另一個DataTable對象的形式)??梢栽谶m當(dāng)時使用AcceptChanges()方法接受已做的修改,從而覆蓋原來的
95、數(shù)據(jù)。例如,可以在修改提交到數(shù)據(jù)庫后這樣做。也可以使用RejectChanges()撤銷所有的修改,如當(dāng)最終用戶單擊“取消”按鈕時。</p><p> DataTable對象也暴露了很多事件,在應(yīng)用程序中可以定制這些事件,如RowDeleted和ColumnChanged。使用這些事件可以保證應(yīng)用程序?qū)κ录M(jìn)行響應(yīng),還可以實現(xiàn)其他功能,例如,確保底層數(shù)據(jù)庫在數(shù)據(jù)發(fā)生修改時立即更新。</p><
96、;p> (1)DataColumn。</p><p> DataColumn存儲了在數(shù)據(jù)表中定義列所需的所有信息。在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訪問)用于包含表的所有元數(shù)據(jù),這些數(shù)據(jù)不包含在DataC
98、olumn對象中。Constaint類作為更具體類的基類,這些具體類包括UniqueConstaint—用于確保給定列或列組合的值是唯一的(例如,這對于主鍵是必須的)和ForeingKeyConstaint—用于實現(xiàn)表之間的關(guān)系。</p><p> ?。?)DataRow。</p><p> DataRow類用于存儲表中一行包含的數(shù)據(jù)。通過DataTable.Rows屬性可以訪問Data
99、Row Collection對象,后者存儲了組成表數(shù)據(jù)的多個DataRow對象。一行數(shù)據(jù)中的各列可通過索引器來訪問,索引器讓你能夠通過列名、索引和版本(例如,如果行被修改)來訪問列。</p><p> 行的當(dāng)前狀態(tài),即它是否被修改、刪除或以某種方式改變,可通過DataRowState屬性訪問。該屬性的值為DataRowState類型,這是一種包含所有可能行狀態(tài)的枚舉類型。各個DataRow對象也有與DataTa
100、ble對應(yīng)的方法,用于接受、拒絕和獲得更改。例如,可以推斷出,調(diào)用DataTable. AcceptChanges()將級聯(lián)地對表的每行調(diào)用DataRow AcceptChanges()。</p><p> 6.DataRelation</p><p> 在處理多個DataTable對象時,通常需要表示(并實施)表數(shù)據(jù)之間的關(guān)系。這由DataRelation類來完成??蓪⒍鄠€DataR
101、elation對象組合起來,構(gòu)成一個DataRelationCollection對象。</p><p> 關(guān)系可以用DataRelation類的多個屬性來定義,包括ChildTable、ChildColumns、ChildKeyConstraint、ParentTable和ParentKeyConstraint等。這些屬性都是對相應(yīng)的對象的引用,如DataTable和DataColumn對象。關(guān)系名也被存儲在D
102、ataRelation.RelationName屬性中。</p><p> 現(xiàn)在還不用太擔(dān)心DataRelation對象,因為它們封裝了ADO.NET比較高級的方面,這在本書后面將介紹。</p><p><b> 7.DataSet</b></p><p> 現(xiàn)在到了ADO.NET中最重要的類—DataSet。從某種程度上說,該類只是Da
103、taTable對象和DataRelation對象的集合(如圖2.6所示)。然而,DataSet的強(qiáng)大功能體現(xiàn)在與其他對象結(jié)合使用,包括用于Web應(yīng)用程序和Windows應(yīng)用程序的控件、Web服務(wù)和XML文檔。</p><p> DataSet類包含很多屬性和方法;其中很多與其組成部分的屬性和方法類似,例如,GetChanges()和RejectChanges()。還有一些重要的屬性,如Tables(以DataT
104、ableCollection類的形式包含DataSet中的表集合)、Relations(包含一個DataRelation Collection類,其中的Relation對象定義了表之間的關(guān)系)。</p><p> 數(shù)據(jù)表之間的關(guān)系及應(yīng)用于數(shù)據(jù)的約束使得對DataSet的操作很麻煩。例如,如果兩個表之間存在一對多關(guān)系,則添加一行到其中一個表中,可能要求另一個表中存在一行。而這行可能不存在(例如,如果兩行同時添加時
105、),這時,為避免錯誤,添加這些行的順序?qū)⒑苤匾?;必須先添加位于關(guān)系“一”端的行。也可以將DataSet.Enforce Constraints屬性設(shè)置為false,這樣在執(zhí)行編輯操作時將忽略關(guān)系。</p><p> ?。?)DataSet對象和XML之間的關(guān)系。</p><p> 與ADO.NET的其他對象一樣,設(shè)計DataSet對象時也考慮了XML數(shù)據(jù)。使用DataSet. GetXm
106、l()方法,可將數(shù)據(jù)集轉(zhuǎn)換為XML文檔;還可以使用DataSet.GetXmlSchema()方法只提取數(shù)據(jù)集中的架構(gòu)(包括數(shù)據(jù)集包含的所有表和其他對象的架構(gòu))作為XML文檔。還可使用序列化技術(shù)在DataSet和XML文檔之間進(jìn)行轉(zhuǎn)換,因為DataSet類實現(xiàn)了IxmlSeria- lizable接口。</p><p> DataSet對象與XML之間的關(guān)系以及使用序列化在這兩種表示格式之間進(jìn)行轉(zhuǎn)換,在.NET
107、框架中運用相當(dāng)廣泛。它提供了一種在應(yīng)用程序?qū)又g和通過Internet交換數(shù)據(jù)的很好方法。特別地,有了數(shù)據(jù)集的XML表示形式后,就可以在Web服務(wù)之間進(jìn)行交換DataSet對象。</p><p> ?。?)類型化數(shù)據(jù)集(typed data set)。</p><p> DataSet對象的功能很強(qiáng)大,但它們并不是最容易使用或最合乎邏輯的。例如,要訪問表中的特定行,使用它就顯得很笨拙。必
108、須使用DataSet.Tables集合獲得正確的表,用DataTable.Rows集合獲得正確的行,然后以對象引用的形式或通過DataColumn的方法提取列數(shù)據(jù)—這些都不容易。訪問特定列的代碼行可能如下所示:</p><p> int result = (int)myDataSet.Tables["myTable"].Rows[5][ "IntegerColumn"];
109、</p><p> 還有一種方法,那就是使用類型化數(shù)據(jù)集。類型化數(shù)據(jù)集是DataSet的子類,但它包含強(qiáng)類型屬性和方法,使得數(shù)據(jù)操作更容易。如果使用類型化數(shù)據(jù)集,上面的代碼就可以簡化為如下所示:</p><p> int result = myTypedDataSet.MyTable[5].IntegerColumn;</p><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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文設(shè)計
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文設(shè)計
- 畢業(yè)論文設(shè)計 企業(yè)人事管理系統(tǒng)設(shè)計
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文設(shè)計-企業(yè)人事管理系統(tǒng)的設(shè)計與實現(xiàn)
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文企業(yè)人事管理系統(tǒng)
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文
- 企業(yè)人事管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文-vb企業(yè)人事管理系統(tǒng)設(shè)計
- 畢業(yè)論文--人事管理系統(tǒng)設(shè)計
- 人事管理系統(tǒng)畢業(yè)論文設(shè)計
- vb企業(yè)人事管理系統(tǒng)畢業(yè)論文
- 畢業(yè)論文--企業(yè)人事管理系統(tǒng)設(shè)計與實現(xiàn)
- 企業(yè)人事管理系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)論文
- 企業(yè)人事管理系統(tǒng)設(shè)計與實現(xiàn)畢業(yè)論文
- 畢業(yè)論文——人事管理系統(tǒng)
- 人事管理系統(tǒng)畢業(yè)論文
評論
0/150
提交評論