《最新人体饮食健康系统毕业.pdf》由会员分享,可在线阅读,更多相关《最新人体饮食健康系统毕业.pdf(81页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 人体饮食健康系统毕业 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 本科毕业设计(论文)题目:人体饮食健康系统 院(系)专 业 班 级 姓 名 学 号 导 师 年 月 日 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 人体饮食健康系统 摘要 随着现代农业与食品工业的发展,食物的种类越来越多,同时,人们的生活节奏日益加快,消费者缺乏食品营养与健康方面的知识,饮食结构不合理,营养平衡经常被打破,导致疾病不断滋生,如三高,营养不良等。本人体饮食健康系统采用C/S 结构,主要对用户的饮食信息以及营养摄入情况进行管理,方便用户建立一个完善的、
2、强大的饮食信息数据库。本文详细介绍了人体饮食健康系统的实现原理及所用到的技术方案,最终实现动态跟踪消费者的饮食习惯,进行营养评估和营养配餐,帮助消费者建立起健康的饮食方案。关键词:人体饮食健康系统 饮食习惯 营养评估 C/S 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 Human diet and health system Abstract With the development of modern agriculture and food industry,the kinds of
3、 food became rich.At the same time,the pace of Modern peoples life was becoming fast and people had the lack of knowledge about nutrition and health,so that diet structure was irrational,nutritional balance was often broken up and there were many diseases,such as high blood sugar,high blood lipids,h
4、ypertension,malnutrition and so on.The C/S structure is used to The human diet health system,It facilitates the users to establish a perfect and powerful diet information database,mainly on the users diet and nutrition information management,This paper introduces the realization of the human diet he
5、alth system principle and use of technology solutions,realizes the dynamic tracking about eating habits of consumers,and conducts nutritional assessment and nutrition recipe,in order to help consumers establish a healthy diet program.Key word:human diet and health system eating habits nutritional as
6、sessment 目录 人体饮食健康系统.摘要.精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 Human diet and health system.I 主要符号列表.1 绪论.0 1.1 题目背景及研究意义.0 1.2 国内外相关研究情况.0 2 人体饮食健康系统开发工具及语言特点.2 2.1 Visual Studio.NET 主要特点如下 2.1.1 提供加速开发过程的高效工具.2 2.1.2 提供对各种网络应用程序的快速设计能力.2 2.1.3 利用 XML 和 Web Service 来简化分布式计算.2 2.1.4 快速构建中间层商务组件.2 2.1
7、.5 构建可靠的可伸缩解决方案.3 2.2 C#技术概述.3 2.2.1简洁的语法.3 2.2.2精心地面向对象设计.4 2.3 SQL2008 主要特点.4 2.3.1 NET 框架.4 2.3.2 XML 技术.4 2.3.3 ADO.NET2.0 版本.4 2.3.4 增强的安全性.5 2.3.5 Transact-SQL 的增强性能.5 2.3.6 SQL 服务中介.5 2.3.7 通告服务.5 2.3.8 Web 服务.5 2.3.9 报表服务.5 2.3.10 全文搜索功能的增强.5 2.4 C#与 ADO.NET.6 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删
8、除 谢谢21 2.4.1 C#中的数据库访问26.6 2.4.2 数据绑定.14 2.5 SQL 语言.15 2.5.1 表定义语句.15 2.5.2 视图定义语句.15 2.5.3 索引定义语句.16 2.5.4 数据操纵语句.16 2.5.5 INSERT 语句.16 2.5.6 UPDATE 语句.16 2.5.7 DELETE 语句.16 2.5.8 查询语句.16 2.5.9 条件查询.17 2.5.10 查询排序.17 2.5.11 统计查询.17 2.5.12Group by 子句.17 2.5.13Distinct 关键词.18 2.5.14 Top 关键词.18 2.5.15
9、 多表查询.18 2.5.16 多重查询.18 2.5.17 EXISTS 关键词.18 3 系统分析.19 3.1 需求分析.19 3.2 开发工具的选择.19 4 总体设计.20 4.1 项目规划.20 4.2 系统业务流程分析27.20 4.3 系统功能结构.21 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 5 系统设计.22 5.1 设计目标.22 5.2 开发及运行环境.22 5.3 数据库设计28.22 5.3.1 数据表的概要说明.22 5.3.2 数据表 E-R图.23 5.3.3 主要的数据表结构29.25 6 主要功能模块及界面设计.28 6
10、.1 系统登录设计30.28 6.2 主窗口.29 6.3 用户基本信息窗口.30 6.4 营养摄入标准窗口.31 6.5 饮食记录窗口.32 6.6 营养评估窗口.34 6.7 饮食推荐窗口.35 6.8 营养配餐窗口.35 7 测试.37 7.1 软件测试的重要性.37 7.2 人体饮食健康系统主窗体模块测试.37 8 小结.38 参考文献.39 致谢.41 毕业设计(论文)知识产权声明.42 毕业设计(论文)独创性声明.43 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 附录 A.0 附录 B.9 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站
11、删除 谢谢21 主要符号列表 Microsoft Visual Studio 2010 系统开发平台 Microsoft SQL Server 2008 数据库 C#系统开发语言 C/S 客户/服务器 HTTP 超文本传输协议 ADO.NET 数据源进行交互的面向对象类库 精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 1 绪论 1.1 题目背景及研究意义 居民膳食营养状况是一个国家经济发展和社会进步的重要标志1。改革开放以来,人们的物质水平不断提高,人们的饮食已由温饱型转向营养型。我们知道,不同类型的人,由于年龄、体重、劳动强度、性别等差别,每日所要摄取的营养素标
12、准有所不同,但是人们往往更多注重的是食品的美味,却往往忽略食物的搭配及营养2,饮食结构不合理,营养平衡经常被打破,导致疾病不断滋生。有研究表明:健康膳食是预防慢性病如肥胖、高血压、胆固醇血症等的主要措施之一3。本课题则以营养学理论为基础,运用现代信息技术,跟踪消费者的饮食习惯,及时提出预警和指导信息,帮助消费者建立起健康的饮食方案。1.2 国内外相关研究情况 目前国内外对医学营养学教育及研究均十分重视4-7,在国内科研人员在营养健康的调研和实验中首先选择的群体是学生,由于学生营养与健康状况是反映一个国家或地区经济与社会发展、卫生保健水平和人口素质的重要指标8。学生营养健康现状的调查结果显示学生
13、们的营养摄入不均衡,大体表现为营养不良,低血红蛋白,肥胖等症状,研究报告中提出的解决方案是每个学校须配备专业的营养配餐师,以保证学生科学的摄食营养9-12。随着计算机与网络技术的发展,研究人员开始用计算机辅助人体营养配餐,进行决策但总体国内对这方精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 面研究不多13-16,较早的有北方工业大学和北京营养研究所 1991 年研制的“大学生营养配餐电脑系统”17,该系统实质是用电脑来手工配餐,还没有能够达到自动配餐和专家支持的水平四川一研究所研制了“卫生导餐系统”于1997 年在湖北通过国家鉴定。另有科研人员研制了营养评价和营养
14、配餐电脑18,以及应用微机进行营养配餐和菜肴营养评价19。国外在这方面做了不少的研究20,21,在二十一世纪初期,国外在利用计算机进行营养配餐方面要领先于我国,而且趋向于方便、实用、小型化的硬件产品。如日本东芝公司的小型智能菜谱营养机,可根据季节、人体年龄、性别、体重等数据帮助人们选择合乎口味的主副食菜谱并计算出营养含量22。可按用餐人数计算出各种菜的配料和用量;能计算出烹饪时间,具有营养成分测定,运动食醋调节,减肥计划制定与效益计算等多种功能。现在面向营养治疗已是医院对疾病综合治疗中不可缺少的一个重要组成部分23,国内外已有很多营养学者和临床医疗工作者应用各种膳食评价方法对膳食因,素与慢性病
15、之间的关系进行了研究24,科研人员将营养配餐与医学相结合,对患者进行营养治疗。还有各种营养配餐软件是面向个人,更人性化,操作简单做到每个人都可以营养膳食。软件未来的发展趋势是操作起来更便捷,面向的对象更全面,智能化,能够满足用户饮食健康方面的更多查询需求。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 2 人体饮食健康系统开发工具及语言特点 2.1 Visual Studio.NET主要特点如下 2.1.1 提供加速开发过程的高效工具 Visual Studio.NET25提供了一个统一的、紧密集成的可视化编程的环境,能够帮助用户简化开发网络应用程序过程,并且缩短学
16、习使用方法的时间。这个平台提供了一种新的语言C#和共享的 HTML、XML 和样式单编辑器,用户可以轻松地借助包括 C#在内的任何一种 Visual Studio 语言来开发网络应用程序。2.1.2 提供对各种网络应用程序的快速设计能力 此平台借助了 Web Form,这使得用户可以用它们在开发基于窗体的桌面应用程序时,创建跨平台、跨浏览器的网络应用程序。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 2.1.3 利用 XML 和 Web Service 来简化分布式计算 XML 被用来对上述功能请求的参数进行格式的统一,从而使这些请求能够使用于所有的软件和硬件。这
17、样使得对 Web Service 的访问能够通过使用任何一种组件模型、任何一种语言、在任何一种操作系统上实现。而 Web Service 借助标准的 Intemet 协议在网络上调用商务逻辑。HTTP 被作为 Web Service 传输的基础协议,这个协议使得对功能的请求能够穿越各种团体所使用的防火墙。2.1.4 快速构建中间层商务组件 Visual Studio 核心目标就是要给应用程序提供应用程序快速部署工具,基于服务器。利用 Visual Studio.NET 平台创建的组件将给您的运作提供非常棒的伸缩性和功能。2.1.5 构建可靠的可伸缩解决方案 借助 Visual Studio.N
18、ET,用户可以很容易地创建具有可靠的和伸展能力的应用组件和程序。2.2 C#技术概述C#,这个语言在使得应用程序能够快速开发的同时,并没有抹掉C 和 C+程序员所在乎的一些特性。C#忠实地继承了 C 和 C+的优点。快速应用程序开发(Rapid Application Development,RAD)的思想与简洁的语法将会使你迅速成为一名优秀的软件开发人员。该语言是专门为.NET 应用而开发出的语言,这从根精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 本上保证了 C#与.NET 框架的完美结合。在.NET 运行库的支持下,.NET 框架的各种优点在 C#中表现得很
19、完美。C#的一些突出的特点:精心地面向对象设计 完整的安全性与错误处理 简洁的语法 与 Web 的紧密结合 灵活性与兼容性 版本处理技术 2.2.1 简洁的语法 C#的代码在.NET 框架不允许直接地内存操作,提供的可操纵环境下运行,没有了指针是它最大的特色。在 C+中被经常使用的操作符(例如:“:”、“-”和“.,”)已经不再出现。C#只支持一个“.”。C#中,用真正的关键字换掉了那些把活动模板库(Active Template Library,ALT)和 COM 搞得乱糟糟的伪关键字,如(OLE_COLOR、BOOL、VARIANT_BOOL、DISPID_XXXXX 等等)。C#操作符在
20、.NET 类库中都有了新名字。2.2.2 精心地面向对象设计 从 Smalltalk 起,面向对象的话题始终围绕着任何一种现代程序设计语言。C#确实具有面向对象的语言所应有的一切特性:封装、继承和多态性,这些也不出众。但是通过精心地面向对象设计,由高级商业对象到系统级应用,C#建立广泛组件的最优选择。在 C#的类型系统里,每种类型都可以看成一个对象。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 C#提供一个叫做装箱(boxing)和拆箱(unboxing)的机制来完成这种操作,但不会给用户带来困扰。C#只允许单继承,也就是一个类不再有多个基类,因而避免了类型定义的
21、混乱。你会在继续的学习中了解到C#中没有了全局函数,没有全局变量,也没有全局常数。所有必须封装在一个类之中。你书写的代码会具有更好的可读性,并且大大减少了发生命名冲突的可能性。而这整个C#的类模型是建立在.NET 虚拟对象系统(Visual Object System,VOS)的基础之上,它的对象模型是.NET 基础架构的一部分,不再是它本身的组成部分。在 VB 中我们得来的丰富的 RAD 经验,使得 C#具备了良好的开发环境。结合自身强大的面向对象的功能,C#让开发人员的生产效率得到极大的提高。对于公司来说,软件开发周期缩短会使他们更好面对网络经济的激烈竞争。在效率和功能的杠杆上人们终于找到
22、了支点。2.3 SQL2008 主要特点 2.3.1 NET 框架 在 SQL Server2008 中,开发人员通过运用相似的语言,如微软的VisualC#.NET 与微软的 VisualBasic,将能够创建数据库对象。开发人员还将能创建两个新的对象用户定义的类和集合。2.3.2 XML 技术 在使用本地网络和互联网与在不同应用软件之间传输数据的时候,可扩展标记语言(XML)是一个很重要的标准。SQL Server2008 也会支持存储和查询可扩展标记语言文件。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 2.3.3 ADO.NET2.0 版本 由 SQL 类
23、的新的支持,到多活动结果集(MARS)和 SQL Server2008 中的ADO.NET 将推动数据集操纵和存取,实现更大的可升级性和便利性。2.3.4 增强的安全性 SQL Server2008 中的新型安全模式将用户与对象分开,提供 fine-grainaccess存取并允许对数据存取进行更多的控制。所有系统表格会作为视图得到实施,对数据库系统对象进行更大程度控制。2.3.5 Transact-SQL 的增强性能 SQL Server2008 为开发能够升级的数据库应用软件,提供新的语言功能。这增强的性能含错误处理,功能递归查询,关系运算符和其他数据列排行功能。2.3.6 SQL 服务中
24、介 SQL 服务中介给大型营业范围应用软件提供了一个分布式和异步应用框架。2.3.7 通告服务 通告服务使业务建立多样的通知应用软件,能够向任何设备,提供个人化以及及时的信息,如股市警报、包裹递送警报、新闻订阅、航空公司票价等。在SQL Server2008,通告服务与其他技术紧密地融合在了一起,这些技术包括分析服务以及 SQLServerManagementStudio。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 2.3.8 Web 服务 在 SQL Server2008,开发人员能够在数据库层开发 Web 服务,将 SQL Server当成一个超文本传输协议
25、(HTTP)的侦听器,并且能够为网络服务中心应用软件提供一个新型的数据存取功能。2.3.9 报表服务 在 SQL Server2008 中,报表服务能够提供报表控制,可通过 VisualStudio2010发行。2.3.10 全文搜索功能的增强 SQL Server2008 支持丰富的全文应用软件。服务器的编目功能将得到一定增强,对编目对象提供了更大的灵活性。查询性能与升级性也大幅得到改进,同时新的管理工具可以为有关全文功能的运行,提供更深入的了解。2.4 C#与 ADO.NET 2.4.1 C#中的数据库访问26 以.NET 框架编写的(包括用 C#编写的应用程序)应用程序需要访问数据库时,
26、将使用 ADO.NET 实现数据库访问。数据绑定是一种非常易用的访问数据库的方法,可以减少编写的代码量。一些比较简单任务可以通过纯粹声明式代码来完成。数据访问框架的 ADO.NET 是微软的最新产物,是.NET 框架的一部分。在ADO.NET 使用之前,开发人员在 ASP(Active Server Pages)或 Visual Basic 中精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 使用 ADO(AtiveX Data Objects),它是一组 COM(Component Object Model,组件对象模型)组件,可以通过使用一个简单的封装类提供对底层
27、数据访问代码的访问。ADO 很大程度上简化了数据库访问,但更高级的开发人员(特别是 C+程序员)一般更喜欢使用更直接和更快的代码,比如 OLE DB(Object Linking and Embedding for Databases)代码库。ADO.NET 比 ADO 的功能更加的强大。它在.NET 代码中是访问数据库的最好工具。在.NET 框架里的ADO.NET 类型(在 System.Data 命名空间和其子空间下的所有类型)含那些为了访问 SQL Server、ODBC、OLE DB 及 Oracle 数据库而优化的类型。它们基于通用类,因而使用 ADO.NET 访问不同的 DBMS
28、是相类似的。ADO.NET 类型实现两个主要的功能。数据表示:用于包含数据库数据(如数据表)的类型。数据访问:用于访问数据库中数据和操作数据库的类型;上面两种类型之间联系非常密切,在数据库开发中两种类型都会被用到。严格意义上来讲,可以只用一种数据库访问类型就可以了。但是,若使用数据访问类型来填充数据表示类型将会节省大量工作。ADO.NET 包括 7 个重要的基类,其中 4 个为数据访问类:DbConnection;DbDataRea der;DbCommand;DbDataAdapter。其他 3 个类为数据表示类:DataRelation;精品好文档,推荐学习交流 仅供学习与交流,如有侵权请
29、联系网站删除 谢谢21 DataTable;DataSet。DataTable 类还使用了其他一些很重要的类如:DataColum、Constraint 和DataRow,下面一一介绍它们。1)DbConnection DbConnection 类应用与数据库的连接。创建 DbConnection 对象的时候,应提供和 DBMS 通信所需要的信息,比如数据库的位置、密码和用于认证的用户名以及要访问的 DBMS 中的数据库。其他 ADO.NET 数据的访问类依靠 DbConnection 和数据库进行通信。DbConnection 类的角色如图 2.1 所示。图 2.1 DbConnection
30、 类 由 DbConnection 派生而来的类里,到数据库的连接全是由连接字符串定义的,此字符串存储在属性为 DbConnection.ConnectionString中。数据库连接应只在传输数据时才打开,因而创建 DbConnection 实例的时候并不是自动连接到数据库。DbConnection 类定义了 Open()方法及 Close()方法,用于控制连接什么时候能用。许多其他的 ADO.NET 类也能控制连接状态,如有一些类在完成操作后关闭它们所使用的连接。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 DbConnection 对象还可以参与事务。可用“
31、DbConnection.BeginTransaction()”方法开始事务,或者使用“DbConnection.EnlistTransaction()”作为已有事务的一部分执行操作。要访问 SQL Server 或 SQL Server 速成版中的数据时,会使用SqlConnection,该类是 DbConnection 中的子类。一般来讲,DbConnection 和SqlConnection 及其他子类都被称为连接类。2)DbCommand DbCommand 类可以提供与数据库交互的主要方法。用 DbCommand 对象来执行 SQL 语句并运行存储过程等。DbCommand 和其派生
32、类被称为命令类。大多数情况下并不直接使用 DbCommand,是用封装 DbCommand 的其他对象。但有些时候要对数据库通信实行更多的控制,此时就可以运用 DbCommand 对象。DbCommand 对象的角色如图 2.2 所示。图 2.2 DbCommand 类 DbCommand 中最重要的属性应该是 DbCommand.CommandText。若要执行SQL 语句,就必须把语句文本放在此属性中。可以用DbCommand.CommandType来定要执行的语句类型,以DbCommand.Connection.DbCommand.Tranction来访问底层的连接或事务。DbComma
33、nd 对象中可能会有参数化的命令字符串,命令里的参数来于类型为精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 DbCommand.Parameters 集合的属性。它和直接在命令字符串中输入参数相比有非常多的优点。如果要用 DbCommand 对象来执行命令,这里有三种选择,这取决于要执行的命令是什么和有些命令不返回结果,该状况下可以用“DbCommand.ExecuteNonQuery()”方法;有一些命令返回一个结果,这时候可用“DbCommand.ExecuteScalar()”方法;最后,有很多命令返回多行数据,这时候可用“DbCommand.Execute
34、Reader()”方法,它将会返回一个 DbDataReader 对象。SQL Server 的 DbCommand 版本名是 SqlCommand。它有一些特殊方法,比如 SqlCommand.ExecuteXmlReader()方法,它直接是以 XML 格式返回结果。3)DbDataReader 用 DbDataReader 类能够从结果集中读取数据,像是从执行存储在命令对象中的命令生成的结果集中读取数据。此类经过高度的优化,能够迅速地访问数据库中的数据。但是这种优化也有些不方便的情况,比如只能以串行方式一次读取一行数据。而不能读完两行后然后返回去读取第一行。一般情况下,可以用DbData
35、Reader 对象来提取将要使用的行数据,并把它存储在其他对象中。如能读取一个结果集中的每行,然后将其存储到在自定义集合或泛型列表对象中自定义类里。与命令对象相同,许多数据阅读器对象是由 ADO.NET 命名空间下的其他类使用的,用户不必直接运用它们。图 2.3 说明了如何在数据库应用程序里用数据阅读器。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 图 2.3 DbDataReader 类 若要使用数据阅读器对象,先必须要调用 DbDataReader.Read()方法选择结果集中的第一行。用户可以不断调用该方法来移动数据阅读器,使得数据阅读器像结果集中的游标一样
36、总指向一行。获取到一行的时候,Read()方法返回是true;否则返回是 false如当所有行都已经读完的时候。也可用 DbDataReader.HasRows 属性来判别结果集中是否还有其他行。当前选中的行可用很多属性和方法进行检查。DbDataReader.FieldCount 查看当前行所包含了多少列,并且用 DbDataReader 的重载索引器来访问各列。若知道将要访问的列名,还可以使用基于整数的索引器通过位置来获得列,可以用基于字符串的索引器来获得列值。在两种情况下,该方法都将返回 object 值,可把其转化为其他类型的数据。还可用 DbDataReader 提供的多个方法来直接
37、获得类型化的数据,比如 GetInt32()和 GetString()是分别将指定列以 int 和 string 值返回,列由其索引选择。要用这些方法取得值类型,那必须先要使用DbDataReader.IsDBNull 检查空值;否则,空值将会引发异常。检查空值是非常关键的步骤,因为任何数据库类型都可以为空。而这与.NET 中的值类型不同,可以为空的值类型比如 int,在这种上下文环境中是不被支持的。DbDataReader精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 也可以够获得关于它包含的数据的元信息使用 DbDataReader.GetSchema Tabl
38、e()方法,这样做就能够知道列的名称、数据类型以及其他信息,比如列是否包含空值等。与前面的其他类一样,也有专门用于 SQL Server 的数据阅读器类,这就是SqlDataReader,本书将使用该类。该类继承 DbDataReader,提供将数据读取为本地 SQL 类型的方法,这样就能够避免空类型的问题。这些类型包含在System.Data.Sqltypes 命名空间中,是可为空的;如 SqlDouble 和 SqlInt32。虽然这些类型也可以像标准的值类型那样进行操作,但它们实际上是引用类型。4)DbDataAdapter 在 ADO.NET 中,最核心的数据访问类是 DbDataAd
39、apter 类。该类设计的目的只有一个即减少存储在数据集对象中的数据和数据库进行数据交换时的干扰,而它比前面介绍过的类型要复杂很多;与前面的类相同的是 DbDataAdapter 类也有很多派生类,它们被称为数据适配器类。DbDataAdapter 最关键的特性之一在于用于传输数据的命令对象被检测出来,因而可以针对需要对它们进行定制。图 2.4 说明了 DbDataAdapter 类的工作原理,包含它包括的命令对象。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 图 2.4 DbDataAdapter 类 数据适配器使用了 4 个命令对象,而每个命令对象分别存储在对
40、应的属性中:SelectCommand 用于查询数据、UpdateCommand 用于编辑数据、InsertCommand 用于添加数据和 DeleteCommand 用于删除数据。要使用适配器,并不是要全部用到这 4 个属性,比如可以只用适配器来查询数据。.NET 框架能够根据其他命令的值推断出命令的值,比如可以根据查询命令生成更新的插入和删除命令。在数据适配器中,最常用的两个方法是DbDataAdapter.Update()和 DbDataAdapter.Fill()。Update()方法更新数据库中的数据;Fill()方法从数据库中获取数据。这两个方法都可以用于数据集或者是单个数据表。还
41、可以用 DbDataAdapter.FillSchema()获取架构数据。SQL Server 中的“DbDataAdapter”版本是 Sql DbDataAdapter。5)DataTable DataTable 为 ADO.NET 提供出来的第一个数据表示类。这与数据访问类是不同,数据表示类没有特定用于专门数据库管理系统的子类,它们是独立在平精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 台。一般来说,若是需要的话,数据表示类是完全可以独立于数据库使用。这个 DataTable 类是用于存储数据表。DataTable 对象存储的表不是一定要映射到数据库中的表,
42、因为 DataTable 可能包含表中数据的一个子集,而这个子集可能只包含数据库表的部分列、部分行。图 2.5 说明了 DataTable 与其他 ADO.NET 对象之间的关系。图 2.5 DataTable 使用数据适配器来获得完全填充的 DataTable,含数据 DataTable 了,就能够访问行、列、约束以及它包含的其他信息。这些信息可以通过命名属性来访问,包括 Columns、Rows 和 Contraints 等。上面所说的 3 个属性都会返回一个集合类如“DataRowCollection、DataColumnCollection 和 ConstaintCollection”
43、对象。和其他集合类相同,这些类可以用在它们所包含的对象集合中进行导航,添加或删除项等。DataTable 类另外一个非常重要的方面就是如何处理和修改数据等。比如,如果要删除 DataTable 中的某一行,数据适配器怎样才知道在数据库中删除对应的数据?因为 DataTable 对象记录原始数据的修改,不是数据的当前状态。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 从 DataTable 中删除一行并不是一下子删除这些数据,只是把数据标记为已删除。不管何时都可以使用 GetChanges()方法来获得对 DataTable 对象所做的列表进行修改。再一些情况下可以
44、使用 AcceptChanges()方法接受已经做的修改,从而覆盖原来有的数据。如可以在修改提交到数据库后这样做或者使用RejectChanges()撤销所有的修改或者当最终用户单击“取消”按钮时。DataTable 对象也表露了许多事件,可以在应用程序中定制这些事件,比如ColumnChanged 和 RowDeleted。(1)DataColumn DataColumn 存储了在数据表中定义的列所需的所有的信息。Columns 属性包括一个 DataColumnCollection,是个 DataColumn 对象集合。DataColumn 还包含与 DBMD 相匹配的属性,包含 Colu
45、mnName、AllowDBNull、Dataype 和DefaultValue。(2)Constaint Constaint 对象用于包含表的所有元数据(这些数据不包含在 DataColumn 对象中)。Constaint 类作为更为具体类的基类,具体类包含 UniqueConstaint 用于确保给定列或者是列组合的值,是唯一的 ForeingKeyConstaint 用于去实现表之间的关系。(3)DataRow DataRow 类是用于存储表中一行包含的数据。通过 DataTable.Rows 属性能够访问到 DataRow Collection 对象,而后者存储了组成表数据的多个 Da
46、taRow 对象。通过索引器来访问一行数据中的各列,索引器能够让你通过列名、版本和精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 索引来访问列。行是否被修改、删除或以其他方式改变,可以通过DataRowState 的属性来访问,这个属性的值为 DataRowState 类型,是种包含所有可能行状态的枚举类型。各个 DataRow 对象也会有与 DataTable 对应的方法,被用于接受、获得更改和拒绝。比如可以推断出调用DataTable.AcceptChanges()将级联地对表的每行进行调用 DataRow AcceptChanges()。4)DataRelat
47、ion 当处理多个 DataTable 对象的时候,通常需要搭建表数据之间的关系。这个工作是由 DataRelation 类来完成。它可以将多个 DataRelation 对象进行组合起来,构成了一个 DataRelationCollection 对象。关系可用到 DataRelation 类的多个属性来进行定义包括(ChildTable、ChildKeyConstraint、ChildColumns、ParentTable 和 ParentKeyConstraint 等)。这些属性都是对相应的对象的进行引用,(如 DataTable 和 DataColumn)对象。关系名也存储在DataRe
48、lation.RelationName 属性中。关于 DataRelation 对象,它们封装了ADO.NET 比较高级的方面。5)DataSet ADO.NET 中最重要的类即 DataSet。从某种意义上来说,该类只是DataRelation 对象和 DataTable 对象的集合如图 2.6 所示。精品好文档,推荐学习交流 仅供学习与交流,如有侵权请联系网站删除 谢谢21 图 2.6 DataSet 类 而 DataSet 的强大功能则主要体现在和其他对象的结合使用,包含用 Windows应用程序的控件和在 Web 应用程序以及 XML 文档 Web 服务。DataSet 类还包含很多属
49、性以及方法;而且其中很多和它组成部分的属性和方法相类似,如RejectChanges()和 GetChanges()。还有一些非常重要的属性,比如 Tables“以DataTableCollection 类的形式包含 DataSet 中的表集合、Relations 包含一个DataRelation Collection 类,其中的 Relation 对象定义了表之间的关系”。数据表之间的关系以及应用在数据的约束中使得对 DataSet 的操作很麻烦。若是两个表之间存在一对多的关系的话,则需要添加一行到其中一个表中,这可能要求另一个表中存在一行。而如果这行可能不存在,在这个时候为避免错误,则需要
50、添加这些行的顺序会非常重要,在此之前必须先添加位于关系“一”端的行。我们也可以将 DataSet.Enforce Constraints 属性改为 false,这样在执行编辑操作的时候将会忽略关系。(1)XML 与 DataSet 对象之间的关系 和 ADO.NET 的其他对象相同,设计 DataSet 对象时也应该考虑 XML 数据。使用 DataSet.GetXml()方法可以将数据集转换为 XML 文档;还可使用DataSet.GetXmlSchema()方法仅仅提取数据集中的架构其中包括数据集包含的所有表和其他对象的架构作为 XML 文档;也还可以使用序列化技术在 XML 文档和 Da