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