《计算机科学与技术专业毕业论文企业人事管理系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《计算机科学与技术专业毕业论文企业人事管理系统的设计与实现.doc(55页珍藏版)》请在三一办公上搜索。
1、计算机科学与技术专业毕业论文-企业人事管理系统的设计与实现 摘 要在当今社会互联网空前的发展给人们的工作和生活带来了极大的便利和高效信息化电子化已经成为节约运营成本提高工作效率的首选考虑到当前大量企业的人事管理尚处于手工作业阶段不但效率低下还常常因为管理的不慎而出现纰漏因此根据部分企业提供的需求设计此企业人事管理系统以帮助企业达到人事管理办公自动化节约管理成本提高企业工作效率的目的本企业人事管理系统采用CS结构主要对企业员工的信息以及跟人事相关的工作流程进行集中的管理方便企业建立一个完善的强大的员工信息数据库com 2005 Express数据库作为开发平台使用C 设计操作控件和编写操作程序完
2、成数据输入修改存储调用查询等功能并使用SQL 2005数据库形成数据表进行数据存储本文详细介绍了企业人事管理系统的功能需求系统设计和具体实现并简要介绍了系统开发采用的过程方法关键词 企业人事管理系统CS员工信息数据库AbstractIn our society the unprecedented development of Internet has brought us great convenience and efficiency Informatization and electronization have become the first choice of saving oper
3、ation cost and improving work efficiency Many enterprises personnel administration systems lie in the phase of manual management which 阿惹 inefficient and easy to go wrong by carelessness Therefore this MISManagement Information Systemis designed to make the personnel administration more scientific n
4、ormative and efficientThe system adopts the structure mode of clientserver CS Windows XP as the operation systemSQL 2005 Express as the background database and Microsoft Visual StudioNET 2005 as the developing tool It can help enterprises to establish a perfect strong staff information database whic
5、h facilitates the centralized management of staff information and workflowThe paper explains the course design system design and implementation of MIS also briefly introduces the process of the system developmentKey words Personnel Management System CS Employee Information Database企业人事管理系统21前言211 应用
6、的目的与意义212 人事管理系统发展趋势3com 世界趋势3com 技术革新3com 工作目标和价值观的改变413 系统调研4com 社会可行性分析4com 技术可行性分析4com 经济可行性分析5com 管理可行性分析514 研究内容52开发工具及其语言特点521 Visual StudioNET主要特点如下5com语法7com面向对象设计7comb的紧密结合8com安全性与错误处理9com理技术9com和兼容性1031SQL2005主要特点10comNET框架10com技术11comNET20版本11com安全性11comnsact-SQL的增强性能11com服务中介11com务11com
7、服务12com务12com搜索功能的增强1232C与ADONET12com C中的数据库访问12com 数据绑定2333 SQL语言24com语句24com义语句24com义语句24com纵语句24comERT语句25comATE语句25comETE语句25com句25com询25com排序26com查询26comoup by子句26comstinct关键词26comp关键词26com查询27com查询27comISTS关键词274系统需求分析2741系统流程图如下275 致谢49附录F 各模块实现的主要源代码50F11登录模块的设计与实现的主要代码50 51F12登陆实体类51F13 员工管
8、理模块的设计与实现的主要代码52com理实现的主要代码52com 部门管理实现主要代码53 55com理主要代码55 59com息设计与实现主要代码59 62F14 数据访问类62 65F15生日提醒主要代码65F16启动第三方EXE文件操作类65 66企业人事管理系统1前言11 应用的目的与意义人的管理是一切管理工作的核心员工代表一个企业的形象因而人事管理机制设计的好坏直接影响一个企业的成败 员工的档案管理是企业人事管理的基础在企业员工普遍流失的今天一个准确而及时的人事管理系统有利于人事部门对员工流动进行分析编制为企业所需人员提供了保障人力资源部那些重复的事务性的工作交给HRP Human
9、Resource Planning人力资源管理系统 来解决可以省去用户以往人力资源管理工作的繁琐枯燥用领先的人力资源管理理念把人力资源管理的作业流程控制和战略规划设计巧妙地集合于一体系统重点涉及到人力资源管理工作中的薪资考勤绩效调动基本信息用户管理以及用户切换等方面并有综合的系统安全设置报表综合管理模块可以很好地为用户的人力资源管理部门在对员工的成本管理知识管理绩效管理等综合管理给予帮助以每个月中所发工资为例其中包括考勤人事信息变动奖惩迟到和旷工对本月的薪资计算都有影响为了及时的计算发放工资往往要提前一个星期花费大量时间加班加点才能及时完成而这样做无论从工作效率还是准确度方面都不允许而且还浪费
10、大量的人力财力如果改用HRP管理做到高效高精度还可以减少管理时带来的一些繁琐的工作节约管理带来的开支12 人事管理系统发展趋势com 世界趋势人力资源管理系统主导21世纪无论是发达国家还是发展中国家对人力资源的战略性意义都有了深刻的认识并开始付诸行动世界公认21世纪将是人力资源的世纪人力资源问题将主导整个21世纪甚至更为遥远这种状况的变化起因于竞争压力目前世界经济趋向全球化世界经济的全球化过程和国家的开放过程要求组织的管理部门降低管理成本以减少竞争压力和增强竞争能力对于不同的组织人力资源成本在总成本中的比例是不一样的com 技术革新无论是现在还是将来工业的发展越来越多地取决于科学和技术知识与技
11、能高新科技产业更是如此这不仅要求员工尤其是技术人员掌握新的科学知识和技术能力而且更重要的在于要求员工深入而快捷地掌握和应用这些知识和技能这就导致了两个问题第一随着这种技术革新的发展和知识更新速度的加快人们有更多的职业选择机会第二伴随着这种发展以及职业选择机会的增多人力资源管理活动和频繁程度加剧而且这种活动对科学技术的要求与它的反应程度也更高了进而提高了人力资源成本com 工作目标和价值观的改变随着社会政治和经济的发展人们的工作目标和价值观也都发生了重要的变化这就对人事管理部门和管理人员提出了新的要求和新的问题不得不考虑诸如工作类型设计岗位分析充分尊重员工以及为他们提供良好的个人发展和自我价值实
12、现的环境与条件等问题这样人力资源管理就派上了用场13 系统调研com 社会可行性分析随着计算机的发展与普及以及互联网技术的扩展日常劳资人事管理必将实现无纸化办公并且加入到公司内部的Intranet或者是Internet上去实现数据的共享这样有利于劳资人事信息在单位内部的查询提高了数据资源的利用并且能及时的得到更新不需要象过去那样浪费大量的人力物力去进行抄写提高了工作的效率com 技术可行性分析Visual StudioNET提供了一个统一的紧密集成的可视化编程环境简化了开发应用程序的过程缩短了实用方法的时间利用Visual StudioNET可以非常轻松地创建具有自动伸缩能力的可靠的应用程序和
13、组件而且微软的优秀成果c语言保持了cc所特有的强大功能和控制能力与c十分相似的模型和语法具有与COM服务完全的交互性和完全支持能力能够轻松地迁移现有的代码数据库方面SQL2005已经可以满足中小型企业的数据要求甚至有些大型企业都可以达到要求如今进算计普及程度日益推广计算机配置日新月异能承载此系统的机器就如办公的机器都可以达到要求所以说本系统具有技术可行性com 经济可行性分析采用传统的手工输入方法不仅工作繁琐而且需要人力输入多记录容易出错那样产生了成本高效果差的弊病对于一个企业的资料库建立是十分困难和麻烦的而采用这种系统所发费的成本精力都远远低于手工并且实用十分方便更新也简易每个部门只需一个人
14、统一管理对企业实现办公无纸化能起到很大的作用所以此系统经济可行性也具备了com 管理可行性分析本系统采用了系统数据备份恢复的功能而且界面层次分明一目了然加上设计方面加入了人性化元素管理此系统并不难易学易会14 研究内容本论文共分为5章第1章绪论介绍了本课题的应用目的和意义人事管理系统可行性分析和研究内容第2章介绍了开发工具及其特点数据库技术第3章主要介绍了系统的设计与分析包括总体设计数据库设计详细设计等第4章主要介绍系统实现即系统各种模块的功能实现第5章为本课题完成成果和发展期望的总结本论文主要利用C可视化技术及SQL数据库开发技术对员工管理与考勤管理系统进行系统化细致化和完善化的分析研究2开
15、发工具及其语言特点21 Visual StudioNET主要特点如下com速开发过程的高效工具Visual StudioNET提供了一个统一的紧密集成的可视化编程环境以帮助用户简化开发网络应用程序的过程缩短学习使用方法的时间它提供了一种新的语言C通过共享的HTMLXML和样式单编辑器用户可以轻松地借助包括C在内的任何一种Visual Studio语言来开发网络应用程序com 提供对各种网络应用程序的快速设计能力借助Web Form用户可以用他们在开发基于窗体的桌面应用程序时所使用的技巧来创建跨平台跨浏览器的网络应用程序com 利用XML和Web Service来简化分布式计算Web Servi
16、ce借助标准的Intemet协议在网络上调用商务逻辑HTTP被作为Web Service传输的基础协议该协议使得对功能的请求能够穿越各种团体所使用的防火墙XML被用来对上述功能请求的参数进行格式统一从而使这些请求能够使用于所有的软件和硬件这样使得对Web Service的访问可以通过任何一种语言使用任何一种组件模型在任何一种操作系统上实现com建中间层商务组件Visual Studio的一个核心目标就是要为基于服务器的应用程序提供应用程序快速部署工具利用Visual StudioNET创建的组件将为您的商务运作提供足够的功能和伸缩性com靠的可伸缩解决方案利用Visual StudioNET用
17、户可以非常轻松地创建具有自动伸缩能力的可靠的应用程序和组件22 C技术概述C在带来对应用程序的快速开发能力的同时并没有牺牲C与C程序员所关心的各种特性它忠实地继承了C和C的优点如果你对C或C有所了解你会发现它是那样的熟悉即使你是一位新手C也不会给你带来任何其它的麻烦快速应用程序开发 Rapid Application DevelopmentRAD 的思想与简洁的语法将会使你迅速成为一名熟练的开发人员C是专门为NET应用而开发出的语言这从根本上保证了C与NET框架的完美结合在NET运行库的支持下NET框架的各种优点在C中表现得淋漓尽致C的一些突出的特点简洁的语法精心地面向对象设计与Web的紧密结
18、合完整的安全性与错误处理版本处理技术灵活性与兼容性com语法在缺省的情况下C的代码在NET框架提供的可操纵环境下运行不允许直接地内存操作它所带来的最大的特色是没有了指针与此相关的是那些在C中被疯狂使用的操作符例如- 和已经不再出现C只支持一个对于我们来说现在需要理解的一切仅仅是名字的嵌套而已C用真正的关键字换掉了那些把活动模板库 Active Template LibraryALT 和COM搞得乱糟糟的伪关键字如OLE_COLORBOOLVARIANT_BOOLDISPID_XXXXX等等每种C操作符在NET类库中都有了新名字语法中的冗余是C中的常见的问题比如const和define各种各样的
19、字符类型等等C对此进行了简化只保留了常见的形式而别的冗余形式从它的语法结构中被清除了出去com面向对象设计从Smalltalk开始面向对象的话题就始终缠绕着任何一种现代程序设计语言的确C具有面向对象的语言所应有的一切特性封装继承与多态性这并不出奇然而通过精心地面向对象设计从高级商业对象到系统级应用C建造广泛组件的绝对选择在C的类型系统中每种类型都可以看作一个对象C提供了一个叫做装箱 boxing 与拆箱 unboxing 的机制来完成这种操作而不给使用者带来麻烦这在以后的章节中将进行更为详细的介绍C只允许单继承即一个类不会有多个基类从而避免了类型定义的混乱在后面的学习中你很快会发现C中没有了全
20、局函数没有了全局变量也没有了全局常数一切的一切都必须封装在一个类之中你的代码将具有更好的可读性并且减少了发生命名冲突的可能整个C的类模型是建立在NET虚拟对象系统 Visual Object SystemVOS 的基础之上其对象模型是NET基础架构的一部分而不再是其本身的组成部分在下面将会谈到这样做的另一个好处是兼容性借助于从VB中得来的丰富的RAD经验C具备了良好的开发环境结合自身强大的面向对象功能C使得开发人员的生产效率得到极大的提高对于公司而言软件开发周期的缩短将能使它们更好应付网络经济的竞争在功能与效率的杠杆上人们终于找到了支点comb的紧密结合NET中新的应用程序开发模型意味着越来越
21、多的解决方案需要与Web标准相统一例如超文本标记语言 Hypertext Markup LanguageHTML 和XML由于历史的原因现存的一些开发工具不能与Web紧密地结合SOAP的使用使得C克服了这一缺陷大规模深层次的分布式开发从此成为可能由于有了Web服务框架的帮助对程序员来说网络服务看起来就象是C的本地对象程序员们能够利用他们已有的面向对象的知识与技巧开发Web服务仅需要使用简单的C语言结构C组件将能够方便地为Web服务并允许它们通过Internet被运行在任何操作系统上的任何语言所调用举个例子XML已经成为网络中数据结构传递的标准为了提高效率C允许直接将XML数据映射成为结构这样就
22、可以有效的处理各种数据com安全性与错误处理语言的安全性与错误处理能力是衡量一种语言是否优秀的重要依据任何人都会犯错误即使是最熟练的程序员也不例外忘记变量的初始化对不属于自己管理范围的内存空间进行修改这些错误常常产生难以预见的后果一旦这样的软件被投入使用寻找与改正这些简单错误的代价将会是让人无法承受的C的先进设计思想可以消除软件开发中的许多常见错误并提供了包括类型安全在内的完整的安全性能为了减少开发中的错误C会帮助开发者通过更少的代码完成相同的功能这不但减轻了编程人员的工作量同时更有效地避免了错误的发生NET运行库提供了代码访问安全特性它允许管理员和用户根据代码的ID来配置安全等级在缺省情况下
23、从Internet和Intranet下载的代码都不允许访问任何本地文件和资源比方说一个在网络上的共享目录中运行的程序如果它要访问本地的一些资源那么异常将被触发它将会无情地被异常扔出去若拷贝到本地硬盘上运行则一切正常内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担NET平台提供的垃圾收集器 Garbage CollectionGC 将负责资源的释放与对象撤销时的内存清理工作变量类型是安全的C中不能使用未初始化的变量对象的成员变量由编译器负责将其置为零当局部变量未经初始化而被使用时编译器将做出提醒C不支持不安全的指向不能将整数指向引用类型例如对象当进行下行指向时C将自动验证指向的有效性C中提
24、供了边界检查与溢出检查功能com理技术C提供内置的版本支持来减少开发费用使用C将会使开发人员更加轻易地开发和维护各种商业用户升级软件系统中的组件模块是一件容易产生错误的工作在代码修改过程中可能对现存的软件产生影响很有可能导致程序的崩溃为了帮助开发人员处理这些问题C在语言中内置了版本控制功能例如函数重载必须被显式声明而不会象在C或java中经常发生的那样不经意地被进行这可以防止代码级错误和保留版本化的特性另一个相关的特性是接口和接口继承的支持这些特性可以保证复杂的软件可以被方便地开发和升级com和兼容性在简化语法的同时C并没有失去灵活性尽管它不是一种无限制语言比如它不能用来开发硬件驱动程序在默认
25、的状态下没有指针等等但是在学习过程中你将发现它仍然是那样的灵巧如果需要C允许你将某些类或者类的某些方法声明为非安全的这样一来你将能够使用指针结构和静态数组并且调用这些非安全代码不会带来任何其它的问题此外它还提供了一个另外的东西这样的称呼多少有些不敬来模拟指针的功能-delegates代表再举一个例子C不支持类的多继承但是通过对接口的继承你将获得这一功能com正是由于其灵活性C允许与C风格的需要传递指针型参数的API进行交互操作DLL的任何入口点都可以在程序中进行访问C遵守NET公用语言规范 Common Language SpecificationCLS 从而保证了C组件与其它语言组件间的互操
26、作性元数据 Metadata 概念的引入既保证了兼容性又实现了类型安全31SQL2005主要特点comNET框架使用SQL Server2005开发人员通过使用相似的语言例如微软的VisualCNET和微软的VisualBasic将能够创立数据库对象开发人员还将能够建立两个新的对象用户定义的类和集合 com技术 在使用本地网络和互联网的情况下在不同应用软件之间散步数据的时候可扩展标记语言XML是一个重要的标准SQL Server2005将会自身支持存储和查询可扩展标记语言文件 comNET20版本 从对SQL类的新的支持到多活动结果集MARSSQL Server2005中的ADONET将推动数
27、据集的存取和操纵实现更大的可升级性和灵活性 com安全性 SQL Server2005中的新安全模式将用户和对象分开提供fine-grainaccess存取并允许对数据存取进行更大的控制另外所有系统表格将作为视图得到实施对数据库系统对象进行了更大程度的控制 comnsact-SQL的增强性能 SQL Server2005为开发可升级的数据库应用软件提供了新的语言功能这些增强的性能包括处理错误递归查询功能关系运算符PIVOTAPPLYROW_NUMBER和其他数据列排行功能等等 com服务中介 SQL服务中介将为大型营业范围内的应用软件提供一个分布式的异步应用框架 com务 通告服务使得业务可以
28、建立丰富的通知应用软件向任何设备提供个人化的和及时的信息例如股市警报新闻订阅包裹递送警报航空公司票价等在SQL Server2005中通告服务和其他技术更加紧密地融合在了一起这些技术包括分析服务SQLServerManagementStudio com服务 使用SQL Server2005开发人员将能够在数据库层开发Web服务将SQL Server当作一个超文本传输协议HTTP侦听器并且为网络服务中心应用软件提供一个新型的数据存取功能 com务 利用SQL Server2005报表服务可以提供报表控制可以通过VisualStudio2005发行 com搜索功能的增强 SQL Server200
29、5将支持丰富的全文应用软件服务器的编目功能将得到增强对编目的对象提供更大的灵活性查询性能和可升级性将大幅得到改进同时新的管理工具将为有关全文功能的运行提供更深入的了解32C与ADONETcom C中的数据库访问用NET框架编写的当然也包括用C编写的应用程序应用程序需要访问数据库时将使用ADONET来实现数据库访问数据绑定是一种非常有用的访问数据库的方法能够减少需要编写的代码量很多简单任务可以通过纯粹声明式代码来完成 ADONETADONET是微软的数据访问框架的最新产物它是NET框架的一部分在ADONET之前程序员在ASPActive Server Pages或Visual Basic中使用A
30、DOAtiveX Data Objects这是一组COMComponent Object Model组件对象模型组件它通过一个易于使用的封装类提供对底层数据访问代码的访问虽然ADO大大简化了数据库访问但更高级的程序员特别是C程序员通常更喜欢使用更直接更快的代码如OLE DBObject Linking and Embedding for Databases代码库ADONET比ADO的功能更强大它是在NET代码中访问数据库的最好工具NET框架中的ADONET类型在SystemData命名空间及其子空间下的所有类型包括那些为访问SQL ServerOLE DBODBC和Oracle数据库而优化的类
31、型它们都是基于通用类的因此使用ADONET访问不同的DBMS是相似的ADONET类型实现两个主要的功能 数据访问用于访问数据库中数据和操作数据库的类型 数据表示用于包含数据库数据如数据表的类型这两种类型之间联系密切在数据库开发中两种类型都会用到严格地说可以只用一种数据库访问类型然而如果使用数据访问类型来填充数据表示类型将节省大量工作 ADONET包含7个重要的基类其中4个是数据访问类DbConnection DbCommand DbDataReader DbDataAdapter其他3个类是数据表示类DataTable DataRelation DataSetDataTable类使用了其他一些
32、重要的类DataColumConstraint和DataRow本节也将介绍它们1DbConnectionDbConnection类提供与数据库的连接创建DbConnection对象时应提供与DBMS通信所需的所有信息如数据库的位置用于认证的用户名和密码以及要访问的DBMS中的数据库所有其他ADONET数据访问类都依靠DbConnection与数据库进行通信DbConnection类的扮演角色如图21所示com DbConnection类在从DbConnection派生而来的类中到数据库的连接都是由连接字符串定义的该字符串存储在属性DbConnectionConnectionString中数据库
33、连接应只在传输数据时才打开因此创建DbConnection实例时并不自动连接到数据库DbConnection类定义了Open 方法和Close 方法用于控制连接何时可用很多其他的ADONET类也能控制连接状态例如有些类在完成操作后关闭它们使用的连接DbConnection对象还能参与事务可用DbConnectionBeginTransaction 方法开始事务或使用DbConnectionEnlistTransaction 作为已有事务的一部分执行操作访问SQL Server或SQL Server速成版中的数据时使用SqlConnection该类是DbConnection的子类一般来说DbCo
34、nnection和SqlConnection及其他子类都称为连接类2DbCommandDbCommand类提供与数据库交互的主要方法可以用DbCommand对象来执行SQL语句运行存储过程等DbCommand及其派生类称为命令类大部分时候并不直接使用DbCommand而是用封装了DbCommand的其他对象但有时候需要对数据库通信进行更多的控制这时就可以使用DbCommand对象DbCommand对象的扮演角色如图22所示com DbCommand类DbCommand中最重要的属性是DbCommandCommandText要执行SQL语句就要将语句文本放在这个属性中可以用DbCommandCo
35、mmandType来指定要执行的语句类型使用DbCommandConnection和DbCommandTranction来访问底层的连接或事务要注意DbCommand对象可能有参数化的命令字符串命令中的参数来自类型为DbCommand Parameters集合的属性这与直接在命令字符串中输入参数相比有很多优点在本书后面部分将会看到要使用DbCommand对象执行命令有三种选择这取决于要执行的命令是什么有些命令不返回结果这种情况下可以用DbCommandExecuteNonQuery 方法有些命令返回一个结果这时可用DbCommandExecuteScalar 方法最后有很多命令返回多行数据这时
36、可用DbCommand ExecuteReader 方法它将返回一个DbDataReader对象下一小节将解释SQL Server的DbCommand版本名为SqlCommand它有自己的一些特殊方法如SqlCommand ExecuteXmlReader 方法它直接以XML格式返回结果3DbDataReader使用DbDataReader类可以从结果集中读取数据如从执行存储在命令对象中的命令生成的结果集中读取数据该类经过高度优化可以很快地访问数据库中的数据然而这种优化也有些副作用例如只能以串行方式一次读取一行数据不能读完两行后再返回去读取第一行通常可以用DbDataReader对象更确切地说
37、是数据阅读器的子类对象来提取要使用的行数据并将其存储在其他对象中例如可以读取一个结果集中的每行将其存储到在自定义集合或泛型列表对象中的自定义类中与命令对象一样很多时候数据阅读器对象是由ADONET命名空间下的其他类使用的用户不必直接使用它们com如何在数据库应用程序中使用数据阅读器要使用数据阅读器对象首先必须调用DbDataReaderRead 方法选择结果集中的第一行可不断调用该方法来移动数据阅读器使数据阅读器像结果集中的游标一样总是指向一行获取一行时Read 方法返回true否则返回false如当所有行都已经读完时也可以用DbDataReader HasRows属性来判断结果集中是否还有其
38、他行com DbDataReader类很多属性和方法可用于检查当前选中的行DbDataReaderFieldCount查看当前行包含多少列并用DbDataReader的重载索引器访问各列如果知道要访问的列名可用基于字符串的索引器来获得列值也可以使用基于整数的索引器通过位置获得列在这两种情况下这种方法都将返回object值可将其转化为其他类型的数据也可以使用DbDataReader提供的多个方法直接获得类型化数据如GetString 和GetInt32 分别将指定列以string和int值返回列通过其索引选择要使用这些方法获得值类型必须首先使用DbDataReaderIsDBNull检查空值否则
39、空值将引发异常检查空值是必须的因为不管什么数据库类型都可以为空这与NET中的值类型不同可为空的值类型如int在这种上下文环境中是不受支持的DbDataReader也能够获得关于它包含的数据的元信息使用DbDataReaderGetSchema Table 方法这样就可以知道列的名称数据类型和其他信息如列是否包含空值与前面的其他类一样也有专门用于SQL Server的数据阅读器类这就是SqlDataReader本书将使用该类该类继承DbDataReader提供将数据读取为本地SQL类型的方法这样就能够避免空类型的问题这些类型包含在Sycomypes命名空间中是可为空的如SqlDouble和Sql
40、Int32虽然这些类型也可以像标准的值类型那样进行操作但它们实际上是引用类型4DbDataAdapter在ADONET的核心数据访问类中最后一个是DbDataAdapter类它比前面介绍过的类型要复杂得多设计该类的目的只有一个减少存储在数据集对象中的数据与数据库进行数据交换时的干扰与前面的类一样DbDataAdapter类也有很多派生类它们统称为数据适配器类稍后将详细解释什么是数据集对象简单地说它们是能够以NET对象的形来表示数据库中数据的对象数据集对象可以包含整个表或多个表的数据数据适配器既可以将数据库中的数据传输给包含在数据集中的表也可以将数据集中的数据传输到数据库中这个功能由命令对象和数
41、据阅读器对象执行因此大部分时候用户不必考虑它然而DbDataAdapter最重要的也是最有用的特性之一是它用于传输数据的命令对象被暴露出来因此可以根据需要对它们进行定制图24说明了DbDataAdapter类的工作原理包括它包含的命令对象com DbDataAdapter类数据适配器使用的4个命令对象存储在4个属性中SelectCommand用于查询数据InsertCommand用于添加数据UpdateCommand用于编辑数据和DeleteCommand用于删除数据要使用适配器并不一定全部用到这4个属性例如可以只用适配器来查询数据另外NET框架可以根据其他命令的值推断出命令的值例如可以根据查
42、询命令来生成更新插入和删除命令然而这种自动生成的命令的效率可能不如手工提供的高本书稍后还会讨论这个问题数据适配器中最常用的两个方法是DbDataAdapterFill 和DbDataAdapterUpdate Fill 方法从数据库中获取数据Update 方法更新数据库中的数据这两个方法都可以用于数据集或单个数据表另外可以使用DbDataAdapterFillSchema 获取架构数据SQL Server中的DbDataAdapter版本是Sql DbDataAdapter5DataTableDataTable是ADONET提供的第一个数据表示类与数据访问类不同数据表示类没有专门用于特定数据库
43、管理系统如SQL Server的子类它们独立于平台实际上如果需要的话数据表示类完全可以独立于数据库使用它们只是存储数据的一种方便的方法DataTable类用于存储读者可能对此感到不解数据表在继续讨论这个类之前需要澄清一件事情以DataTable对象存储的表不一定要映射到数据库中的表DataTable可能包含表中数据的一个子集该子集可能只包含数据库表的部分行部分列可能是由数据库中多个表组合而成的数据还可能是所有这些的组合这取决于用于获得数据的查询语句通常DataTable与数据库中的表匹配但仍然要知道上面提到的事实comDataTable与其他ADONET对象之间的关系图25 DataTable
44、要获得完全填充的DataTable可使用数据适配器有包含数据的DataTable后就可以访问行列约束和它包含的其他信息这些信息可以通过命名恰切的属性来访问包括RowsColumns和Contraints等上面提到的3个属性都返回一个集合类DataRowCollectionDataColumnCollection和ConstaintCollection对象与其他集合类一样这些类可用于在它们包含的对象集合中导航添加或删除项等稍后将介绍这些集合包含的类DataTable类另一个非常重要的方面是如何处理数据修改例如如果删除DataTable中的一行数据适配器如何知道在数据库中删除对应的数据DataTa
45、ble对象记录了对原始数据的修改而不只是数据的当前状态从DataTable中删除一行并不会真的删除这些数据而只是数据被标记为已删除在DataTable对象的消费方如应用程序看来就像数据已被删除但实际上并没有删除任何时候都可以使用GetChanges 方法获得关于对DataTable对象所做的修改列表以另一个DataTable对象的形式可以在适当时使用AcceptChanges 方法接受已做的修改从而覆盖原来的数据例如可以在修改提交到数据库后这样做也可以使用RejectChanges 撤销所有的修改如当最终用户单击取消按钮时DataTable对象也暴露了很多事件在应用程序中可以定制这些事件如Ro
46、wDeleted和ColumnChanged使用这些事件可以保证应用程序对事件进行响应还可以实现其他功能例如确保底层数据库在数据发生修改时立即更新1DataColumnDataColumn存储了在数据表中定义列所需的所有信息在DataTable中Columns属性包含一个DataColumnCollection这是一个DataColumn对象集合DataColumn还包含与DBMD匹配的属性包括ColumnNameDataypeAllowDBNull和DefaultValue它的属性可能比使用的DBMS的属性还要多但如果使用过不同的DBMS这一点将显而易见对于SQL Server这并不是问题2
47、ConstaintConstaint对象在ConstaintCollection中可通过DataTableConstaints访问用于包含表的所有元数据这些数据不包含在DataColumn对象中Constaint类作为更具体类的基类这些具体类包括UniqueConstaint用于确保给定列或列组合的值是唯一的例如这对于主键是必须的和ForeingKeyConstaint用于实现表之间的关系3DataRowDataRow类用于存储表中一行包含的数据通过DataTableRows属性可以访问DataRow Collection对象后者存储了组成表数据的多个DataRow对象一行数据中的各列可通过索引器来访问索引器让你能够通过列名索引和版本例如如果行被修改来访问列行的当前状态即它是否被修改删除或以某种方式改变可通过DataRowState属性访问该属性的值为DataRowState类型这是一种包含所有可能行状态的枚举类型各个DataRow对象也有与DataTable对应的方法用于接受拒绝和获得更改例如可以推断出调用DataTable AcceptChanges 将级联地对表的每行调用DataRow AcceptChanges 6DataRelation在处理多个DataTabl