基于ado net的数据访问技术研究

基于ado net的数据访问技术研究

ID:11051366

大小:790.50 KB

页数:108页

时间:2018-07-09

上传者:U-10243
基于ado net的数据访问技术研究_第1页
基于ado net的数据访问技术研究_第2页
基于ado net的数据访问技术研究_第3页
基于ado net的数据访问技术研究_第4页
基于ado net的数据访问技术研究_第5页
资源描述:

《基于ado net的数据访问技术研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

本科毕业设计论文题目基于ADO.NET的数据访问技术研究专业名称学生姓名指导教师毕业时间 设计论文毕业任务书一、题目基于ADO.NET的数据访问技术研究二、指导思想和目的要求1、学习Web程序开发的相关知识,掌握.NET平台下的C#编程语言;2、学习及掌握ADO.NET;3、针对一个生产管理系统的应用背景,分析并实现数据访问层。三、主要技术指标1、基于ADO.NET技术实现对SQLSERVER2000数据库访问的基本操作。2、实现数据库事务处理的集中控制。3、针对一个的生产管理系统的应用背景,实现数据访问层。四、进度和要求1.2007.3.5---2007.3.27:学习.NET、C#和网络安全相关知识培训;2.2007.3.28---2007.4.9:熟悉C#语言在下.NET的编程;3.2007.4.10---2007.5.4:对关键技术结合系统需求进行分析并给出相应的解决方案;4.2007.5.5---2007.6.10:详细设计与编程实现;5.2007.6.11---2007.6.24:系统测试、整理相关文档、撰写论文以及毕业答辩。五、主要参考书及参考资料【1】TomArcher,C#技术内幕,MicrosoftPress2001【2】陈英学,MicrosoftASP.NET深入编程,北京希望电子出版社,2001【3】GrantPalmer著,康博译,C#程序员参考手册,清华大学出版社,2002 【1】TerrenceJ.Joubert、RyanN.Payet,ADO.NETProgramming,Wordware出版,2003【2】CharlesPetzold著,杨涛王建桥杨晓云高文雅译,C#程序设计,机械工业出版社,2004【3】(意)DinoEsposito著,罗兵顾雁宏詹文军译,精通ASP.NET程序设计,ProgrammingMicrosoftASP.NET,清华大学出版社,2006【4】ThomasConnolly&CarolynBegg著,宁洪等译,数据库系统——设计、实现与管理(第三版)DatabaseSystemsAPracticalApproachtoDesign,Implementation,andManagementThirdEdition(英),电子工业出版社,2005学生________指导教师___________系主任___________ 本科毕业论文目录摘要IABSTRACTII第1章前言11.1研究的目的和意义11.2论文研究的现状21.3设计原理和规模3第2章WEB应用程序框架42.1MVC模式42.2WEB应用程序的框架5第3章ADO.NET73.1ADO.NET历史及概述73.2ADO.NET体系结构83.3ADO.NET的优势11第4章XML144.1XML概述144.2XML的特性154.3.NET框架下的XML16第5章事务185.1事务支持185.2事务的属性195.3并发控制205.4事务与恢复20第6章基于.net平台下用ADO.NET来实现数据访问层226.1传统的Web应用程序访问数据库226.2采用通用数据类来实现数据访问层236.3事务处理27第7章展望30 本科毕业论文致谢33参考文献34毕业设计总结35 本科毕业论文摘要MVC(Model-View-Controller)设计模式由模型、视图、控制器三部分组成。模型是应用对象,没有用户界面。视图表示它在屏幕上的显示,代表流向用户的数据。控制器定义用户界面对用户输入的响应方式,负责把用户的动作转成针对Model的操作。Model通过更新View的数据来反映数据的变化。ADO.NET是一组向.NET程序员公开数据访问服务的类。ADO.NET为创建分布式数据共享应用程序提供了一组丰富的组件。它提供了对关系数据、XML和应用程序数据的访问,还提供了代码的强壮的可维护性和优良的性能,从而使之成为一种强大的高性能数据技术。XML语言可以让信息提供者根据需要,自行定义标记及属性名,也可以包含描述法,从而使XML文件的结构可以复杂到任意程度。XML作为引人注目的核心技术应用于B2B、.NET和网络服务等许多系统中。目前传统的Web应用程序访问数据库的方法是SQL代码是嵌入在domain/business类中,这种策略是针对小型系统能快速开发,一旦系统出现改动,就要修改源代码,程序员的工作量很大。目前比较通用的方法是SQL代码写在独立的一个或多个数据类中或在存储过程中,这种方法做到了压缩了源代码,而把处理SQL放置在了数据类。针对上述的情况,提出了通用数据类的概念。在软件的分层体系结构中,通用数据类是与数据库打交道的逻辑层。在数据库中对数据的增加,删除,查找和修改操作由通用数据类来处理。采用通用数据类,使程序开发人员摆脱开SQL和事务,达到了快速开发的目的。这个项目主要就是利用ADO.NET和XML技术实现了数据访问层的思想,并实现了事务集中处理。关键词:MVC,ADO.NET,XML,数据访问层,事务处理III 本科毕业论文ABSTRACTTheMVC(Model-View-Controller)designpatterniscomposedbymodelviewandcontrollerthreeparts.Themodelappliestheobject,doesnothavetheusercontactsurface.Theviewexpresseditonthescreendemonstration,therepresentativeflowstouser'sdata.Thecontrollerdefinitionusercontactsurfacetotheuserinputresponsewayisresponsibleuser'smovementtotransferinviewoftheModeloperation.ModelthroughrenewsViewthedatatoreflectthedatathechange.TheADO.NETisonesettovisitaministranttypetowardthememberpublicdataofthe.NETprocedure.ADO.NETforestablishedtheapplicationprocedureofthedistributetypedatasharetoprovideasetofmoduleforenriching.Itprovidedtotheinterviewofrelationdata,XMLandapplicationproceduredata,itisapowerful,productivedatatechnologythatprovideshighmaintainabilityofcodeandgoodperformance.XMLmakeinformationprovidercustommarkandpropertynameaccordingtorequirement,andalsoitmaycontaintheprincipleofdescribing.SothestructureofXMLdocumentmaybeascomplexasitisrequired.XMLisappliedtoB2B,.NETandnetserviceetcaseye-catchingkeytechnology.Atpresent,thetraditionalWebapplicationaccesstothedatabaseisthatSQLcodeisembeddedinadomain/businessclass,thisstrategyistargetingrapiddevelopmentofthesmallsystem,oncethesystemchanges,itisnecessarytochangethesourcecode,programmer'sworkload.CurrentlymorecommonmethodistowriteSQLcodeinaseparateoneormoredataclassorinstoragetheprocess;suchmethodsdothecompressionofthesourcecode,andputdealwithSQLinadataclass.Inresponsetothesecircumstances,auniversaldataclassconceptcomesout.Layeredsoftwarearchitecture,universaldataclassisdealingwiththelogiclayerofthedatabase.Inthedatabase,add,delete,searchandmodifythedataishandledbytheuniversaldataclass.Toadoptauniversaldataclass,programdevelopmentstaffIII 本科毕业论文breaksfreeofSQLandbusinessandachievesapurposeofrapiddevelopment.TheprojectismainlyusedADO.NETandXMLtechnologytoachieveadataaccesslayerthinking,andthecentralizedachievementofbusiness.KEYWORDS:mvc,ado.net,xml,dataaccesslayer,businessachievementIII 本科毕业论文第1章前言1.1研究的目的和意义数据库的连接先后主要经历了ODBC、OLEDB、ADO、ADO.NET等几个阶段。早期的数据库连接是非常困难的。每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解。因此,能处理各种各样数据库的通用的API就应运而生了。也就是现在的ODBC(OpenDatabaseConnectivity),ODBC是人们在创建通用API的早期产物。有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库。ODBC兼容的数据库包括Access、MS-SQLServer、Oracle、Informix等。但ODBC并不是完美无缺的,它仍然含有大量的低级的调用,开发ODBC应用程序仍较困难。开发者不得不将大量的精力花在底层的数据库通信中,而不能专注于他们所要处理的数据。针对这些缺陷,微软提出了OLEDB,一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像)。OLEDB位于ODBC层与应用程序之间。在你的ASP页面里,ADO是位于OLEDB之上的应用程序。你的ADO调用先被送到OLEDB,然后再交由ODBC处理。你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升。ADO(ActiveXDataObject,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。ADO向我们提供了一个熟悉的,高层的对OLEDB的Automation封装接口。ADO.NET是对MicrosoftActiveXDataObjects(ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO.NET组件,它可以是基于一个MicrosoftVisual33 本科毕业论文Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。利用VisualStudio.NET,你可以对你的对象进行编程,而不是某一个数据表或某一个数据列。ADO.NET采用强类型编程,可以更好的表述业务对象。除了能够方便阅读,强类型代码也更加容易编写。特别是依靠语句自动补写功能,你编写的对象也能够识别。此外,强类型数据集有更高的执行速度,因为应用程序不必在每次访问数据成员时都去ADO对象集合中查找了。为了使得在VisualStudio.NET使用数据变得更容易,VisualStudio.NET中有许多新特性。对于核心部分的XML开发人员,微软公司已经包括了一个具有语句完成和标识符完成功能的彩色编码XML设计器。对于一个更加图形化的数据视图,开发人员可以使用XML设计器的设计视图。可以简单将任何数据源中(包括MicrosoftSQLServer和Oracle数据库)的表格,从ServerExplore拖放到数据表面上。你可以创建由来自多个数据源,包括任何XML文件在内的数据组成的数据集。当你设计自己的应用程序时,经常需要添加、修改或删除数据。使用数据预览(DataPreview)选项卡,你不仅可以添加和修改数据,还可以操纵数据之间的关系。VisualStudio.NET的数据绑定技术进行了极大的改进以充分利用ADO.NET。创建与数据进行交互的用户界面现在变得更容易了。更重要的是,现在你可以将数据绑定到商务对象和XML网络服务。基于ADO.NET如此强大的优点和功能,使用ADO.NET是一种必然。1.1论文研究的现状Web应用程序中的分层,可以分为表示层、业务层、数据访问层。每层在应用程序中都有明确的责任,不应该和其它层混淆功能。在一个典型的Web应用程序的一端是表示层,中间的组件是业务层,而数据访问层是与数据库进行联系的。在软件的分层体系结构中,通用数据类是与数据库打交道的逻辑层。在数据库中对数据的增加,删除,查找和修改操作由通用数据类来处理。采用通用数据类,使程序开发人员摆脱开SQL和事务,达到了快速开发的目的。33 本科毕业论文1.1设计原理和规模.NET首先是一个开发平台,定义了一种公共语言子集(CommonLanguageSubset)是一种为符合其规范的语言与类库之间提供的无缝集成混合语言。NET统一了编程类库,提供了对下一代网络的通信标准,对可扩展标记语言XML完全支持,是应用程序的开发变得更简单,更容易。.NET改变了因特网的行为方式,软件将变成服务。.NET与Windows平台紧密集成,由于其运行库与操作系统融合在一起,在广义上.NET可以被称为一个运行库。它是一个综合性的面向对象的可通用类型的集合,可以用来开发包括从传统命令行或图形用户界面应用程序到基于ASP.NET所提供的创新应用程序在内的应用程序。NET是一种面向网络,支持各种用户终端的开发平台。微软公司的宏伟目标是让Microsoft.net彻底改变软件的开发方式,发行方式和使用方式。.NET的核心内容之一就是要搭建第三代因特网平台,这个平台将解决网站之间的的协同合作问题,可以最大限度地获取信息。在.NET平台上不同网络之间通过相互的协定联系在一起,网络之间可以自动交流,协同工作,从而提供最全面的服务。本文研究的是基于.net平台下用ADO.NET来实现数据访问层。33 本科毕业论文第1章WEB应用程序框架1.1MVC模式就Web应用程序开发来说,MVC是最基本的一种设计模式了。MVC(Model-View-Controller)把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层:模型层(Model)、视图层(View)、控制层(Controller)。MVC将Web应用程序的一个页面分成若干部分,当对其中的一部分修改时,另外一部分可能只需要很少的变动甚至保持新鲜,使得应用程序对需求变化的适应性更好。此外,Web应用程序往往既要实现美观的用户界面,又要实现精确复杂的商务逻辑,然而并不是所有的人都能同时做好这两件事情。有了MVC,开发团队成员件的协作就比较容易了。1.视图(View)部件把表示模型数据及逻辑关系和状态的信息以特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形式或视图。2.控制器(Controller)部件是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调工作的部件。3.模型(Model)部件保存由视图显示,由控制器控制的数据;它封装了问题的核心数据、逻辑和功能的计算关系,它独立于具体的界面表达和I/O操作。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。模型、视图、控制器三者之间的关系,如图2-33 本科毕业论文1所示。MVC模式通过区分各个层,允许组成每个层的各个组件间松散的耦合。这使得程序开发更加灵活,并且可以减少重复性的代码,实现代码的重用。模型视图控制器图2-1MVC模式图1.1WEB应用程序的框架基于MVC模式实现的Web应用程序,可以分为表示层、业务层、数据访问层。图2-2WEB应用程序的体系结构基于.NET平台实现MVC模式具有如下特点:1)降低了依赖性:利用ASP.NET页,程序员可以在一个网页内实现方法。但随着页面复杂性不断提高,或者对网页之间共享代码的需要不断增加,分离代码的各部分就变得更加有用。2)减少代码重复:MVC模式中,模型(model)代码只与数据库有关,可以实现共享。3)分离职责和问题:通过分离视图(view)和模型,各个领域的专业人员可以并行工作。33 本科毕业论文1)增加了代码和复杂性,因此,当必须对所有三个角色进行更改时,就会增加代码的维护成本。因此,必须对分离代码的理由和额外付出的代价进行权衡。数据控制层在框架中主要负责和数据库实现SQL操作,数据控制层内部使用三层结构,以webService为数据提供中枢,实现数据的集成存取;在webService层面之上,集成系统的核心代码、形成权限控制与核心代码层;根据核心代码层提供的接口与规范,为应用开发人员提供应用开发接口,形成虚拟界面层(为二次开发提供系统API)。以WebService为数据提供中枢:整个系统提供统一的数据存取接口,完全使用WebService技术,实现系统编程与数据库平台无关性。实现对系统平台之上的各类数据库平台、各种数据库的数据操作。面向对象构筑系统核心代码:完全面向对象编程,形成系统的核心代码层,主要提供低级的系统访问接口,实现系统权限控制接口、数据存取控制接口,在.Net基础类库基础上,形成应用开发类库,为虚拟开发界面层提供底层支持。虚拟界面层,提供应用开发与集成接口:系统设计将核心代码层与应用开发层区隔开来,为应用开发提供虚拟接口,以实现所有应用系统的全面无缝集成。33 本科毕业论文第1章ADO.NET1.1ADO.NET历史及概述ADO.NET是自几年前开放数据库连接(ODBC)出现以来最新的数据库访问技术。ODBC采用C语言风格的函数库进行编写,提供统一的API向各种数据库服务器发出SQL调用。在ODBC模型中,与数据库相关的驱动程序隐藏了在应用程序中使用SQL语言与内部查询引擎之间的差异。此后,COM出现在数据库领域,与OLEDB一起再领风骚。OLEDB从ODBC发展而来,事实上,开发数据库连接被原封不动的包含在里面。OLEDB是基于COM的API,其目标是为应用程序访问任何能够公开为表格行集的数据构建公共代码层。OLEDB体系结构由两个元素组成:使用者和提供程序。使用者被包含到客户端,负责与数据提供程序建立基于COM的通信。OLEDB数据提供程序则接受来自使用者的调用并对数据源执行命令。无论是什么数据格式和存储介质,OLEDB提供程序都返回采用表格布局格式的数据,即以行和列表示的数据。尽管OLEDB能保证相当的性能和灵活性,但由于它不易使用,而且主要是用于C++应用程序,因此OLEDB从来就没有得到程序员的欢迎。此后出现了ActiveX数据模型(ADO),它相当于OLEDB的COM自动版本,使微软VisualBasic和ASP应用程序能够使用OLEDB技术。ADO在使用时,扮演嵌入在宿主应用程序中的真正的OLEDB使用者的角色。发明ADO技术时正是两层、面向连接的应用程序的时代,其对象模型的设计也反映了这种情况。ADO使编程过程冗余:通常它提供多种方式来完成任务,包含很多维护代码。因此,尽管ADO非常易于使用,基于ADO的应用程序执行的效率并没有纯OLEDB应用程序高。ADO.NET是专门为.NETFramework量身定做的数据访问层。ADO是过去几年中出现的对象模型,成功地用于编写使用数据的应用程序,ADO.NET的出现受到ADO的重要启发。ADO.NET的设计标准是简洁性和性能。这两个标准33 本科毕业论文常常互相牵制,但是使用ADO.NET使你能够获得结合现代对象模型的简洁性的强大功能和性能。与ADO不同的是,ADO.NET遵循的是一般规则,而不是基于数据库的规则。ADO对象模型与ADO.NET之间存在一些语法区别。除此之外,在功能上,ADO和ADO.NET非常相同。因为微软花了很多精力使用ADO对一些ADO.NET对象模型的编程方面进行了调整。这样数据开发人员要使用ADO.NET就无需熟悉太多新概念,经过较短时间的学习就可以进行工作。使用ADO.NET时,你可能不能重用很多现有的代码,但是你的很多技巧是可以重复使用的。1.1ADO.NET体系结构ADO.NET对象模型有两个基本组件组成:一是数据集(DataSet),它与数据源断开并且不需要知道所保持数据的来源;另一个是.NET数据提供者(.NETdataprovider),它与数据源连接,并执行针对数据源的SQL命令。图3-1ADO.NET体系结构图1..NET数据提供者1..NET数据提供者数据提供者组件33 本科毕业论文每个.NET数据提供者都由四个主要组件构成:lConnection:用于连接到数据源。lCommand:用于执行针对数据源的命令并且检索DataReader或DataSet,或者用于执行针对数据源的一个INSERT、UPDATE或者DELETE命令。lDataReader:一个已连接的、向前只读结果集。lDataAdapter:用于从数据源产生一个DataSet,并且更新数据源。SqlClient提供者SqlClient提供者与ADO.NET捆绑,属于System.Data.SqlClient命名空间,它能够访问SQL7.0或其更新版本的数据库,也可以访问MSDE数据库。但是它不能在SQLServer6.5或其更早版本的数据库使用。SqlClient数据提供者的类全以“Sql”开头。1.DataSetDataSet对象是支持ADO.NET的断开式、分布式数据方案的核心对象。DataSet是数据的内存驻留表示形式,无论数据源是什么,它都会提供一致的关系编程模型。它可以用于多个不同的数据源,用于XML数据,或用于管理应用程序本地的数据。DataSet表示包括相关表、约束和表间关系在内的整个数据集。DataSet通常是断连的,因此不关心数据的来源,为了将DataSet连接到数据源,需要将DataAdapter作为DataSet和.NET数据提供者的中介。DataSet对象模型DataSet中可以包含多个数据表,而且这些表格可以来自不同的数据源。为此,ADO.NET提供了DataTable类,它表示DataSet中的单个数据表。DataSet包含DataTables属性,该属性返回这些对象的集合(DataTableCollection)。DataTable使用表格的格式来表示数据,并包含表示表格每一行每一列DataRow和DataColumn对象集合。要访问DataTable数据,就必须访问合适的DataRow对象,并将其编入索引以获得某一特定列的数据。此索引可以是列的编号索引或列名。例如:ds.Tables[0].Rows[0][0]表示DataSetds中的第一个数据表的第一行的第一列。ds.Tables[“students”].Rows[0][“stuname”33 本科毕业论文]表示ds中的students表的第一行的stuname列。DataRelationCollectionExtendedPropertiesDataSetDataViewchildRelationsParentRelationsConstraintsExtendedPropertiesPrimaryKeyDataTableCollectionDataTableDataColumnCollectionDataColumnExtendedPropertiesDataRowCollectionDataRow图3-2DataSet对象模型用数据库中的数据填充DataSet的步骤是:1)建立连接,并打开该连接;2)实例化一个新的DataAdapter对象;3)创建一个新的DataSet;4)调用DataAdapter的Fill方法填充DataSet。例如:SqlConnectionconn=newSqlConnection(strconn);Conn.Open();SqlDataAdapterda=newSqlDataAdapter(strCommand,cn);DataSetds=newDataSet();da.Fill(ds,”students”);conn.Close();33 本科毕业论文1.1ADO.NET的优势ADO.NET是由.NETFramework为与数据库中的数据进行交互而提供的一组对象类的名称,是对MicrosoftActiveXDataObjects(ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO.NET组件,它可以是基于一个MicrosoftVisualStudio的解决方案,也可以是任何运行在其它平台上的任何应用程序。1.ADO.NET可交互的数据更广泛ADO.NET可以与许多类型的对象交互,不仅有存储在数据库中的数据,还有存储在电子邮件服务器文本文件应用程序文档(例如Excel电子表格)和XML中的数据。ADO.NET允许从源中选择相当抽象的数据,数据库管理员只需授予使用数据的一个视图的权限接口,即使没有访问数据源其他内容的权限,也可以使用ADO.NET把数据放在ASP.NET页面上。ASP.NET还提供了一种比传统ASP更容易格式化页面上的数据格式:DataGrid,它可以创建大多数的HTML标记,它与ADO.NET的对象相结合,可以轻松地把各种数据以多种形式上传到页面上。而且,ADO.NET还提供了以XML格式处理数据的工具。2.在ADO.NET中,在处理断开连接的数据集时,将打开连接的时间降至最低。在网站的访问者请求数据时就要建立连接,传送数据,之后关闭连接。接着,访问者就可以修改数据,但这些修改不会在数据源中立即更新——在用访问者所做的修改更新数据库之前,必须重新打开连接。例如“选择(select)”或“更新(update)”,这样就可以将行读入数据集(DataSet)对象中,然后在不保持与数据源的连接的情况下使用它们。在ADO中,记录集可以提供不连接的访问,但ADO主要是为连接的访问设计的。ADO和ADO.NET中的不连接处理数据之间存在一个显著的差异。在ADO中,使用OLEDB供应程序和ODBC驱动程序来与数据库通信。在ADO.NET中,是托管的数据供应程序完成这个任务。.NET提供了两个托管的供应程序:33 本科毕业论文1)ManagedProviderforSQLServer,仅能于SQLServer通信。因为这个供应程序只需要于一个数据库通信,所以它是最优的,速度很快。2)ManagedProviderforOLEDB基于OLEDB,可以于有OLEDB供应程序的数据仓库通信,但它不是专用的托管的供应程序。1.ADO.NET可以在应用程序间共享数据在应用程序间传输ADO.NET数据集比传输ADO不连接的记录集要容易得多。如果要将ADO不连接的记录集从一个组件传输到另一个组件,应该使用COM。如果要在ADO.NET中传输数据,应使用数据集,它可以传输XML流。相对于COM,XML文件的传输提供以下便利之处:1)更丰富的数据类型。COM封送提供一组有限的数据类型。由于ADO.NET中的数据传输是基于XML格式,所以对数据类型没有限制。因此,共享数据集的组件可以使用这些组件一般会使用的任何丰富的数据类型。2)性能。传输大型ADO记录集或大型ADO.NET数据集会使用网络资源,随着数据量的增长,施加于网络的压力也在增加。ADO和ADO.NET都可以最大限度地降低所传输的数据。但ADO.NET还提供另一个性能优势:ADO.NET不需要数据类型转换,而需要COM封送来在组件间传输记录集的ADO,则需要将ADO数据类型转换为COM数据类型。3)穿透防火墙。防火墙可以影响试图传输不连接的ADO记录集的两个组件。防火墙通常配置为允许HTML文本通过,但防止系统级请求(如COM封送)通过。因为组件使用XML交换ADO.NET数据库,所以防火墙可以允许数据集通过。2.可编程性利用VisualStudio.NET,可以对对象进行编程,而不是某一个数据表或某一个数据列。ADO.NET采用强类型编程,可以更好的表述业务对象。例如,在以下的代码行中采用了传统的程序设计(不是强类型的):IFTotalCost>Table("Customer").Column("AvailableCredit")在这个例子中,采用的是关联的、抽象的方式对ADO表和列进行编程。如果采用强类型编程,就变得简单多了:33 本科毕业论文IFTotalCost>Customer.AvailableCredit除了能够方便阅读,强类型代码也更加容易编写。特别是依靠语句自动补写功能,所编写的对象也能够识别。在下例中可以看到,利用IntelliSense(智能感应)技术,可以方便的找到与Customers相关的表。此外,强类型数据集有更高的执行速度,因为应用程序不必在每次访问数据成员时都去ADO对象集合中查找了。1.运用DataSet(数据集)任何采用ADO.NET的应用方案中最重要的就是数据集(DataSet)了。数据集是指数据库数据在内存中的拷贝。一个数据集可以包含任意多个数据表,每一个一般都对应于数据库中的表或视图。数据集组成了一个非连接的数据库数据视图。也就是说,它在内存中,并不和包含对应表或视图的数据库维持一个活动连接。这种非连接的结构体系使得只有在读写数据库时才需要使用数据库服务器资源,因而提供了更好的可伸缩性。由于数据集可以保存多个独立的表并能维护有关表之间的关系的信息,因此它可以保存比记录集丰富得多的数据结构,包括自关联的表和具有多对多关系的表。在运行时,数据会从数据库中取出并先传给一个中间层业务对象,然后传至用户界面。为了适应这种数据交换,ADO.NET采用了基于XML的持续的传递格式。也就是说,当数据从一个层传向另一个层时,ADO.NET的方案是将内存中的数据(即数据集)表述为XML,然后以XML格式传递给其他组件。33 本科毕业论文第1章XML1.1XML概述XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能,这使XML从根本上有别于HTML。XML要比HTML强大得多,它不再是固定的标记,而是允许定义数量不限的标记来描述文档中的资料,允许嵌套的信息结构。HTML只是Web显示数据的通用方法,而XML提供了一个直接处理Web数据的通用方法。HTML着重描述Web页面的显示格式,而XML着重描述的是Web页面的内容。XML中包括可扩展格式语言XSL(ExtensibleStyleLanguage)和可扩展链接语言XLL(ExtensibleLinkingLanguage)。XSL用于将XML数据翻译为HTML或其他格式的语言。XSL提供了一种叠式页面CSS的功能,使开发者构造出具有表达层结构的Web页面来,以有别于XML的数据结构。XLL是XML的链接语言,它与HTML的链接相似,但功能更强大。XLL支持可扩展的链接和多方向的链接。XML是一种元标记语言,用户可以定义自己需要的标记。这些标记必须根据某些通用的原理来创建,但是在标记的意义上,也具有相当的灵活性。例如,假如用户正在处理与家谱有关的事情,需要描述人的出生、死亡、埋葬地、家庭、结婚、离婚等,这就必须创建用于每项的标记。新创建的标记可在文档类型定义(DocumentTypeDefinition,在以后的篇幅中常简称为DTD)中加以描述。XML标记描述的是文档的结构和意义,它不描述页面元素的格式化,可用样式单为文档增加格式化信息。文档本身只说明文档包括什么标记,而不是说明文档看起来是什么样的。总之,XML使用一个简单而有灵活的标准格式,为基于Web的应用提供了一个描述数据和交换数据的有效手段。HTML描述了显示全球数据的通用方法,而XML提供了直接处理全球数据的通用方法。33 本科毕业论文1.1XML的特性XML的特性主要分为4个大方面,分别是:结构化、自描述、可扩展和浏览器自适应。1.结构化XML是一种极端标准化的语言规范。类似于SGML,XML文件利用了一个DTD(Documenttypedefinition,文件类型定义)规范。XML带有一个XML语法分析器,XML语法分析器使用DTD来确定一个文件是否是规范化的。这种规范不允许有任何形式的变通,即使是一个小错误也会导致整个文件通不过XML语法分析器的检查。这些更严格的数据结构的好处之一在于用户可以很容易将文件的属性映射到数据结构或对象分级结构中。这就使在客户端的浏览器和数据库之间来回传输文件变得很可靠,也使用户可以使用结构化的XML文件作为一种中介体让数据在两种数据库之间灵活地进行转移。另一个优点是使各种格式的XML文件都可以被机器识别。允许机器能够识别各种格式的XML页面就可以让不同的站点之间自动共享不同格式的数据。使用DTD,用户甚至可以通过一个共同的描述连接不同格式的数据。2.自描述并没有任何要求规定XML文件必须是可以自描述的,只要求是结构化的就可以,但带有自描述可以增强Web的检索功能。这些描述被称作“元数据(metedata)”,它们可以包括有关一个文件的信息如安全(谁可以阅读它)、阅读范围、文件内容、文件是用什么语言写的、作者是谁以及关于这个文件的其它任何信息。元数据的存在可以大大增强Web的检索和导航功能。通常普通的HTML完成这样一个查询过程是非常复杂的,但有了XML后Web页面就可以自动完成这一系列的查询过程。元数据的出现使得使用软件代理变得更加简单。这里所描述的代理是指一个能够从网络上的多台机器中根据用户的需要搜集信息的一个有线程对象工具。通常代理都被认为是“智能的”、“可移动的”或者是“个人化的”。XML元数据允许一个代理变得更加个人化,由于它能够访问数据的描述,这些描述将有助于代理找到它所需要的信息。33 本科毕业论文1.可扩展性XML的一个中心特性就体现在它的名字中——可扩展性,也被称为可扩展或可定制的能力。可扩展性一直是HTML的弱点,由于HTML被定义成一套固定的标签集,人们不可能增加新的标签而又不破坏HTML标准,但现在Web页面需要表达的内容越来越丰富而复杂,标准HTML规定的标签远远不能满足页面设计的需要。为了解决标准HTML目前的限制并且考虑到未来Web页面发展的需要,就要求新的页面标签具有可扩展性,能够创建新的标签。在XML中,标签是由DTD定义的,正是它定义了在一个文件的结构中允许有什么样的应用,例如:浏览器、检索数据库、打印引擎等。2.浏览器自适应如果一个XML文件是结构化的,那么这样的一个文件应该能够适应各种不同的浏览模式。这种类型的文件允许使用标准的电话接口进行简单的导航处理,如使用不同拨号键来表示不同输入信息。在有必要的前提下,还可以将其作为一种将文本翻译成可读的语言格式的有效方法。XML提供的软件功能还能够对用户输入的数据进行动态的计算和显示。人们可以将股票的价格实时地输入到一个XML格式的表格中,这个表格就能够动态地计算股票的赢亏情况,而这一切都不用借助浏览器即可完成。一些XML的专门应用开发商还在软件方面增加了更多的功能。XML的自适应特性使得用户和开发人员都得到了更大的益处。使用了XML,Web页面的制作和显示将更加方便。从而方便开发人员可以为同样的数据创建多种浏览形式,以便满足不同地区和不同爱好的用户需要。1.1.NET框架下的XML33 本科毕业论文.NET是微软公司推出的新一代互联网软件和服务战略,它是一种面向网络、支持各种用户终端的开发平台环境。而框架通常被认为是有助于应用程序开发地一组类库,但.NET框架不仅仅是一组类库。.NET框架以使用多种编程语言的编译器为目标,这些语言用来创建各种应用程序。.NET框架负责提供一个可为这些应用程序所共享的基础平台。该基础平台包括一组用于监视应用程序执行过程的运行库服务,运行库的一个重要任务就是管理执行过程,以确保使用不同编程语言编写的软件可以安全地使用类和其他类型。具体.NET框架模型参见图4-1:图4-1.NET框架模型.NET框架提供了以下一些命名空间:System.Xml、System.Xml.Schema、System.Xml.Serialization、System.Xml.Xpath以及System.Xml.Xsl来包容和XML操作相关的类。System.Xml命名空间包含了一些最重要的XML类,其中最主要的类是和XML文档的读写操作相关的类。System.Xml.Schema命名空间中包含了和XML模式相关的类。System.Xml.Serialization命名空间中包含了和XML文档的序列化和反序列化操作相关的类,XML文档的序列化操作能将XML格式的数据转化为流格式的数据并能在网络中传输,而反序列化则完成相反的操作,即将流格式的数据还原成XML格式的数据。System.Xml.XPath命名空间包含了XPathDocument、XPathExression、XPathNavigator以及XPathNodeIterator等类,这些类能完成XML文档的导航功能。System.Xml.Xsl命名空间中的类完成了XSLT的转换功能。33 本科毕业论文第1章事务1.1事务支持事务:单个用户或者应用程序执行的、用来读取或更新数据库内容的单个或者多个操作。事务是数据库操作的逻辑单位。它可以是整个程序、部分程序或者一条命令(例如一条INSERT或者UPDATESQL语句),它可包含对数据库的任意数量的操作。从数据库的角度来看,可以将应用程序的执行看成是一系列事务和间隔在其中的非数据库处理操作。事务应该能够总是将数据库从一种一致状态转换到另一种一致状态。尽管当事务处于进程中时,数据库的一致性遭到了破坏。事务可能有一个或者两个结果。如果执行成功,可以说事务提交,数据库将到达一种新的一致性状态。而另一方面,如果事务没有执行成功,就是事务撤销。如果事务一旦撤销,数据库将回滚到事务开始时的一致状态。这样的事务被回滚或者撤销。提交了的事务不能被回滚。如果发现已经提交的事务是错误的,那么只能执行其他的补偿性事务来扭转前面事务产生的效果。但是,被回滚的撤销事务可以在以后重启,然后依赖于导致失效的原因,可能可以成功执行并提交。DBMS无法知道哪些更新操作被组合在一起构成一个独立的逻辑事务。因此,必须提供一种方法使用户能够定义事务的边界。所以很多数据操作语言中都使用关键字BEGINTRANSACTION,COMMIT和ROLLBACK(或者其同义词)划分事务的界限。如何不使用这些分界词,整个程序将被看成是一个单独的事务,DBMS将在程序正确中止后自动执行COMMIT操作,如果程序不能成功执行,将自动执行ROLLBACK操作。图5-1显示了事务的状态转换图。注意除了ACTIVE,COMMITTED和ABORTED这些显而易见的状态外,还有其他两种状态:PARTIALLY33 本科毕业论文COMMITTED:出现在最后一条语句执行后。此时可能有多种可能,系统可能发现事务违背了串行化或违背了完整性约束,因而事务必须被撤销。或者,也有可能出现系统失效,事务更新的所有数据无法被安全地写到辅助存储上。在如上两种情况下,事务将处于FAILED状态,将必须被撤销。若事务成功执行,所做的任何更新将被安全记录,事务将处于COMMITTED状态。FAILED:当事务无法提交或者在处在ACTIVE状态时发生撤销,其原因可能是用户撤销事务或者并发控制协议为保证串行化而撤销事务。BEGIN_TRANSACTIONIONCOMMITTEDCOMMITACTIVEPARTIALLYCOMMITTEDFAILEDABORTEDABORTABORTTYTABORTEND_TRANSACTION图5-1事务的状态转换图1.1事务的属性所有事务都具有某些属性。有四种基本的属性,即所谓的ACID属性是所有事务都具备的:l原子性(Atomicity):“全部或者都不”属性。事务是不可分割的单元,要么全部执行,要么都不执行。由DBMS的恢复子系统来保证原子性。l33 本科毕业论文一致性(Consistency):事务必须将数据库从一个一致状态转换到另一种一致状态。由DBMS和应用程序的开发者共同来保证数据库的一致性。DBMS可以通过履行数据库模式规定的限制条件(例如完整性约束)来保证一致性。但这并不足以保证数据库的一致性。例如,设想有这样一个事务:从银行的一个账户转移资金到另一个账户,但编程人员在处理此事务逻辑时出现了错误,他从正确的账户上取出钱却存入了错误的账户,这样数据库处于一种不一致状态。但这种不一致不是由DBMS引入的,DBMS也无法检测到这种错误。l隔离性(Isolation):事务之间的执行是互相独立的。换句话说,未完成事务导致的中间结果对其他事务来说是不可见的。由DBMS的并发控制子系统负责保证事务的隔离性。l持久性(Durability):成功完成(提交)的事务的结果被永久地记录在数据库中,不因为后面的失效而丢失。由DBMS的恢复子系统负责确保事务的持久性。1.1并发控制当允许多个用户同时访问数据库时,必须进行并发控制。否则,可能发生丢失更新、未提交依赖、不一致分析等问题。串行化执行意味着同一时间只执行一个事务,不存在重叠操作。调度生成事务操作的执行序列。如果一个调度产生的结果与某个串行化调度相同,就说这个调度是可串行化的。保证可串行化的两种方法是二段锁(2PL)和时间戳。锁可以是共享的(读)或互斥的(写)。在二段锁中,事务在释放任意锁之前就获得了它需要的所有锁。通过使用时间戳,事务按照这样一种顺序排序,即较旧的事务在冲突发生时有较高的优先级。当两个或更多事务彼此等待访问被对方加锁的数据时,发生死锁。一旦死锁发生,打破死锁的唯一方法是撤销其中一个或多个事务。在一个允许对不同大小的数据项进行加锁的系统中,可以使用树来表示加锁的粒度。当一个数据项被锁住时,其所有的子孙也被锁住。当一个新事务请求一个锁时,可以很容易地检查对象的所有祖先以确定它们是否已被锁住。为了表明一个节点的任一个子孙是否被锁住,对被锁住节点的所有祖先施以意向锁。1.2事务与恢复33 本科毕业论文事务代表了数据库系统中进行恢复的基本单位。当故障发生时,恢复管理器的职责是,保证事务的四个ACID属性中的两个,即原子性和持久性。恢复管理器必须保证,在从故障中进行恢复时,要么指定事务产生的所有影响都被永久性地记录在数据库中,要么所有的影响都没有被记录。由于数据库写并不是原子(一步完成的)操作,因此情况实际上会很复杂,从而可能产生这种情况:一个已经提交的事务,其产生的影响并未全部被永久性记录在数据库中,因为它们还没有到达数据库。数据库缓冲区位于主存,用于在主存和辅助存储之间传递数据的区域。直到缓冲区中的数据被刷新到辅助存储中,更新操作才能被看作是永久性的。缓冲区向数据库的刷新操作可以由某个特殊的命令触发(比如事务提交),也可以在缓冲区满时自动进行。缓冲区对辅助存储的显示写称为强制写。如果在对缓冲区写与刷新缓冲区到辅助存储之间发生了故障,恢复管理器必须确定当故障发生时执行写操作的事务的状态。如果事务已经发出了提交,则为了保持持久性,恢复管理器必须重做事务对数据库的更新(也称为前滚)。另一方面,如果在故障发生时事务还未提交,则恢复管理器必须撤销(回滚)事务对数据库的所有影响,以保证事务的原子性。如果只有一个事务需要被撤销,则称为部分撤销。当前面描述的并发控制协议引起事务回滚并重启时,调度程序触发部分撤销程序。事务也可以单方面执行撤销,例如,由用户或应用程序中的某个异常条件引起。如果所有的活动事务都必须被撤销,则称为全局撤销。33 本科毕业论文第1章基于.net平台下用ADO.NET来实现数据访问层1.1传统的Web应用程序访问数据库目前传统的Web应用程序访问数据库(均指关系数据库)的结构如下所示:图6-1Hard-codeSQLinyourdomain/businessclasses图6-1中所采用的方法是SQL代码是嵌入在domain/business类中,这种策略是针对小型系统能快速开发,一旦系统出现改动,就要修改源代码,程序员的工作量很大。目前比较通用的方法是:图6-2Creatingdataclassescorrespondingtodomain/businessclasses图6-2中所采用的方法是business类的SQL代码写在独立的一个或多个数据类中或在存储过程中。这种方法相对于把SQL代码嵌入在domain/business类中有了很大的进步,但是这种方法同样也只适用于business类小于40至50个左右的小型系统。同时,当数据库进行简单的改变时,相应的数据类要重新编译。这种方法只是做到了压缩了源代码,而把处理SQL放置在了数据类中或者在数据库的存储过程中。33 本科毕业论文1.1采用通用数据类来实现数据访问层传统的Web应用程序访问数据库所采用的方法中SQL代码是写在源代码中,这就意味着任何一个简单的改变例如改变数据库中表的一个列名,则必须修改源代码。这种修改对于大中型系统,这种缺陷是极为严重的。通用的方法是SQL代码写在独立的一个或多个数据类中或在存储过程中,这种方法做到了压缩了源代码,而把处理SQL放置在了数据类。针对上述的情况,提出了通用数据类的概念。在软件的分层体系结构中,通用数据类是与数据库打交道的逻辑层。在数据库中对数据的增加,删除,查找和修改操作由通用数据类来处理。结构如下所示:图6-3Creatinganuniversaldataclassescorrespondingtodomain/businessclasses采用通用数据类,使程序开发人员摆脱开SQL和事务,达到了快速开发的目的。采用通用数据类有以下几个优点:1)摆脱了繁重的SQL:程序中有大量的SQL语句,使得编写程序变的繁琐,浪费了时间,开发人员的工作量也很大。采用通用数据类后,不再需要这样了。2)实现了SQL语句的自动拼写:原来的SQL语句都是需要程序员来编写,需要大量的工作时间,现在我们可以通过通用数据类来实现SQL语句的自动拼写,大大提高了工作效率。3)事务集中处理:如果事务没有进行集中处理,那么每一个相应的事务(即一段SQL语句:增加、删除、插入等等)都要进行事务处理,这样处理起来,很分散,而且繁琐,效率不高。采用通用数据类就免除了这个缺点。33 本科毕业论文开始业务逻辑提供表名调用方法解析XML,该XML描述了整个数据库表的字段,把解析后的列名用数组保存调用函数,装载数据,用数组保存传表名,两个数组业务层务层数据访问层的通用数据表拼接SQL语句,并实例化执行SQL语句进行事务处理完成数据访问层33 本科毕业论文图6-4业务调用数据访问层的流程图首先,流程开始,进入业务逻辑层,根据业务的需求提供表名,调用方法来解析XML,该XML描述了整个数据库表的字段,把解析后所需表的列名用数组保存,之后调用相应的函数,装载相应表的列值,也用数组保存,一般来说这一步是把表示层的Datagrid的数据读出来(如进行插入或修改操作时),接下来就进入了数据访问层,传表名、两个数组,一个数组是列名,另一个数组是列值,数据访问层的通用数据表拼接SQL语句,并且把它实例化,执行SQL语句,进行事务处理,至此,流程完成。关键技术的实现:1.如何实现将列名与列值用数组保存1)用XML来描述整个数据库的表例如产品信息表用XML如下描述:利用XML,只是简单的将构成表的列进行描述,并没有描述表与表之间的关系以及主外键。2)通过程序解析XML将表的列名用数组保存首先解析数据源.xml中的一个

标签,返回一个DataSource类型的对象,该对象表示数据库所有表。以下是实现的伪码:l功能描述:从数据源中得到数据表的列的名字;l参数描述:tableName是数据源中表的名字;l返回参数:数据源中表的列的名字。33 本科毕业论文protectedArrayListGetTableColumnName(stringtableName){ArrayListcolumnName=newArrayList();for(inti=0;i
当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭