版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第11章数据库应用开发数据库系统原理与设计第11章数据库应用开发学习目标本章从开发者而不是管理者的角度来看待数据库围绕数据库的应用开发展开,介绍数据库系统的体系结构的演变及其现状,讨论常见的数据库访问技术,并通过一些具体的代码介绍数据库开发的过程本章的学习目的是:理解软件开发体系结构变迁的驱动力理解当前主要的软件开发体系结构的思想了解一些主要的数据库访问技术能够使用某种数据库访问技术进行简单的数据库应用开发第11章数据库应用开发学习方法结合应用开发的实践来加深对本章知识的理解在学习数据库系统的体系结构时,可将自己使用过的应用程序或系统对号入座,通过具体的应用来理解不同体系结构的特点在学习数据库访问技术时要联系程序开发实践来加深理解不要求掌握每种数据库访问技术,但要求能够使用某种主流的数据库访问技术来进行数据库应用开发数据库应用开发技术在不断更新,读者要及时补充新的知识学习指南本章的重点是11.1和11.2节关于11.3节,不要求一定要掌握VisualC++下ADO技术,但是至少要掌握某种开发环境下的某种数据库访问技术第11章数据库应用开发本章面向应用程序员,介绍数据库应用开发中的知识,重点是介绍数据库开发的基本技术。具体的数据库开发技术与具体的开发环境有关,本书介绍VisualC++下使用ADO的开发过程。目录数据库系统的体系结构11.1数据库访问技术11.2数据库应用开发实践11.311.1数据库系统的体系结构在20世纪90年代之前,开发人员一直通过集成本地系统服务来构建应用程序在这种模式下,开发人员通过嵌入式开发语言或自含式语言访问后台数据库,可以严格控制应用程序如使用嵌入式C或嵌入式COBOL语言开发访问ORACLE数据库的应用程序系统;使用FoxPro自含式语言开发访问FoxPro数据库的应用程序系统如今,开发人员在很大程度上已经摆脱了这种模式的束缚,致力于构建具有N层复杂结构的系统这种系统将分散在网络中各处的众多的应用程序进行集成,可以极大地提升应用程序的价值在这种开发模式下,开发人员不必为构建基本结构花费过多精力有利于集中精力挖掘软件独特的商业价值,缩短软件投放市场的开发周期编程效率明显提高,软件质量也得到了相应的保证11.1.1软件开发体系结构概述随着软件系统的规模和复杂程度的增加,软件体系结构的选择比数据结构和算法的选择显得更为重要软件体系结构是构件的集合,包括处理构件、数据构件和连接构件处理构件负责对数据进行加工数据构件是被加工的信息连接构件把体系结构的不同部分组合连接起来最初的软件体系结构是客户表示、数据和程序集中放在主机上,只有少量的图形用户界面(GraphicalUserInterface,简记为GUI)主机负责处理所有的业务客户通过终端完成对远程数据库的访问该体系结构要求主机具有很高的性能随着PC机的广泛应用,该结构逐渐在应用中被淘汰11.1.1软件开发体系结构概述20世纪80年代中期出现了Client/Server分布式计算结构,该结构将应用程序的处理分别放在客户(PC机)和服务器(mainframe或Server)上客户机发出SQL请求,该请求被数据库服务器响应,通常由服务器上的关系型数据库进行处理PC机在接收到被处理的数据后实现显示和业务逻辑系统支持模块化开发,客户机提供GUI供客户输入数据和显示服务器返回的结果信息Client/Server结构因其灵活性得到了极其广泛的应用。但对大型软件系统而言,这种结构在系统的部署和扩展性方面还存在着不足该模式在仅有少量用户的系统中其工作状态较好当越来越多的用户访问数据库中的数据时,该模式暴露出它的弊端客户端包含业务逻辑且应用程序必须安装在客户端,一旦业务逻辑发生变化必须更改所有客户端程序,给系统维护带来很大的困难11.1.1软件开发体系结构概述Client/Server结构的软件模型其特点:将用户的界面操作、业务逻辑放在客户端操作将数据操作放在服务器端处理这种体系结构无法确保数据访问的安全(从客户程序中可以得到数据库密码)网络资源消耗较大(因为要保持数据库联接、数据频繁在网络中传递)服务器负担过重(因为它要处理所有客户机的请求)升级不够方便(用户的业务逻辑发生变化,必须更改所有客户机的软件)Internet的发展给传统应用软件的开发带来了深刻的影响随着越来越多的商业系统搬上Internet,一种新的、更具生命力的体系结构被广泛采用,这就是“三层/多层计算”框架11.1.2C/S体系结构C/S两层结构在技术上非常成熟,具有强大的数据操作和事务处理能力该结构模型思想简单,易于人们理解和接受主要特点是交互性强、具有安全的存取模式、网络通信量低、响应速度快、有利于处理大量数据随着企业规模的日益扩大,软件的复杂程度不断提高,该结构存在以下几个局限:程序是针对性开发,变更不够灵活,维护和管理的难度较大。通常只局限于小型局域网,不利于扩展该结构的每台客户机都需安装客户端程序,分布功能弱且兼容性差,不能实现快速部署安装和配置,要求具有一定专业水准的技术人员去完成。该结构是单一服务器且以局域网为中心,难以扩展至大型企业广域网或Internet软、硬件的组合及集成能力有限客户机的负荷太重,不仅要实现表示层,还要实现业务逻辑层,一旦某个业务逻辑发生变化,则所有的客户机软件必须重新安装。当企业中有大量的客户机时,系统的性能容易变坏,且维护也相当不方便11.1.2C/S体系结构多层体系构架:把一个应用程序按功能划分成不同的逻辑组件具有特定功能的应用程序中的一部分称为一层典型的多层体系构架一般把一个应用程序分为三层表现层、业务逻辑层(或者中间层)和数据层中间件是在计算机硬件和操作系统之上,支持应用软件开发和运行的系统软件能够使应用软件相对独立于计算机硬件和操作系统平台,为大型分布式应用搭起了一个标准的平台把大型企业分散的系统和技术组合在一起,实现大型企业应用软件系统的集成11.1.2C/S体系结构中间件的工作机制是:客户端上的应用程序从网络中的某个地方获取一定的数据或服务这些数据或服务可能处于一个运行着不同操作系统和特定查询语言数据库的服务器中应用程序中负责寻找数据的部分只需访问一个中间件系统中间件完成到网络中找到数据源或服务传输客户请求、重组答复信息,最后将结果送回应用程序的任务体系结构如图11-2所示11.1.2C/S体系结构在网络中可以有多台中间件服务器为提高系统的效率,可将企业的业务进行大类分类同类业务规则的实现放在同一台中间件服务器上保证企业的业务处理达到真正的分布式处理客户机访问中间件服务器是通过其提供的接口来实现实现代码客户看不到将企业所有的业务规则、所有对数据库的访问都封装在中间件中一旦企业的某个业务规则发生变化,只要其接口保持不变,客户机的软件就不必更新所有对数据库的操作也封装在中间件中,保证了数据库的安全数据库服务器的功能与两层的C/S结构一样,其结果数据返回给中间件服务器,不是客户机三层是多层体系结构的基础中间件服务器可以再访问中间件服务器,这样就形成了多层体系结构11.1.2C/S体系结构多层体系构架可将系统需求划分成可以明确定义的服务如事务服务、名字服务等这些服务以组件的形式实现一个组件可以实现系统中的一种或者多种服务,是这些服务的物理封装根据系统的功能、性能等各方面的需求,系统管理员可以在网络上灵活地部署这些组件可根据业务的改变灵活地对这些服务组件进行修改,不影响其它组件,降低维护的费用多层体系结构的优点业务规则集中、瘦客户体系结构、自动错误调和、负载平衡、可重用性、灵活性、可管理性、易维护性等11.1.2C/S体系结构开发C/S结构应用程序采用的主要工具有:Borland公司的Delphi7、Jbuilder2005Sybase公司的Powerbuilder10.5微软公司的VB、VF等C/S体系结构主要采用的编程语言有:VB、Delphi和Powerbuilder后台数据库有SQLServer2000、Oracle、DB2、Sybase等11.1.3B/S体系结构三层B/S体系结构客户端只需安装一个浏览器,客户可在任何地方通过Internet网络访问企业中的数据所有对数据库的访问和应用程序的执行由Web服务器完成B/S体系结构也有许多不足地方,表现在以下几个方面:浏览器只是为了进行Web浏览而设计的,当应用于Web应用系统时,许多功能不能实现或实现起来比较困难如通过浏览器进行大量的数据输入,或进行报表的应答都比较困难和不便复杂应用的开发困难虽然可用ActiveX、Java等技术开发较为复杂的应用,但是相对于成熟的C/S工具来说,这些技术的开发复杂11.1.3B/S体系结构HTTP可靠性低,有可能造成应用故障特别是对于管理者来说,采用浏览器方式进行系统的维护非常不安全和不方便Web服务器成为数据库服务器的唯一客户端所有对数据库的连接都必须通过Web服务器实现Web服务器同时要处理与客户请求以及与数据库的连接当访问量较大时,Web服务器的负载过重业务逻辑和数据访问程序一般由JavaScript、VBScript等嵌入式小程序实现分散在各个页面里,难以实现共享,给升级和维护带来不便由于源代码的开放性,商业规则很容易暴露商业规则对应用程序来说是非常重要的11.1.3B/S体系结构由于存在上述问题,提出多层B/S体系结构多层B/S体系结构是在三层B/S体系结构中增加了一个或多个中间层该层使用中间件技术,由相应的应用服务器来管理,它是多层C/S体系结构的一种改进体系结构如图11-4所示11.1.3B/S体系结构有很多著名企业提供了应用服务器软件应用服务器可直接作为Web服务器使用作为一个安全的企业级的管理信息系统,必须将Web服务器与应用服务器物理分开著名的应用服务器有:BEA公司生产的WeblogicApplicationServer;Borland公司生产的EnterpriseServerAppServerServer;Oracle公司生产的OracleApplicationServer;IBM公司生产的WebsphereApplicationServer;微软公司生产的M11.1.3B/S体系结构B/S体系结构的主要特点是:分布性强、维护方便、开发简单且共享性强、总体成本低对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低难以实现传统模式下的特殊功能要求如通过浏览器进行大量的数据输入或进行报表的应答、专用性打印输出等的实现比较困难和不便实现复杂的应用开发有较大的困难相对非常成熟的C/S结构的系列应用开发工具来说,开发比较复杂提出一种将C/S与B/S结构相结合的开发方法11.1.4C/S与B/S结构的结合这种结构优点在于:充分发挥B/S与C/S体系结构的优势,弥补了各自的不足信息发布、数据查询、下订单、维修服务等采用B/S结构,保持瘦客户端的优点由于Web浏览器和网络综合服务器都是基于工业标准的,可在所有的平台上工作企业内部采用C/S结构,可通过ADO/JDBC连接。这一部分只涉及到系统维护、数据更新等,不存在完全采用C/S结构带来的客户端维护工作量大等缺点在客户端可以开发非常复杂的应用,界面友好灵活,易于操作,能解决许多B/S存在的固有缺点11.1.4C/S与B/S结构的结合对于原有基于C/S体系结构的应用,可以非常容易地升级到这种体系结构只需开发用于发布的Web界面,保留原有的C/S结构的某些子系统,充分地利用现有系统的资源,使得现有系统或资源无需大的改造即可以连接使用,节省投资通过在浏览器中嵌入ActiveX控件实现复杂的功能如通过浏览器进行报表的应答客户端ActiveX控件的加盟,可丰富HTML页面,产生令人惊奇的效果将服务器端划分为Web服务器和应用服务器两部分应用服务器采用组件技术实现多层B/S体系结构中的商业逻辑部分,达到封装源代码,保护知识产权的目的Internet应用程序大部分属于分布式应用程序,采用组件技术的一个重要特点就是它的处理能力能够随着用户数量、数据量所需性能的提高而提高11.1.5常用开发体系结构目前常用的开发体系结构有两种,一种是C/S体系结构,一种是B/S体系结构开发体系如图11-6所示11.1.5常用开发体系结构常用的开发方法有基于微软公司的.NET平台技术和基于SUN公司的Java技术Microsoft.NET是将互联网本身作为构建新一代操作系统的基础,是当今计算机技术通向计算时代的一个非常重要的里程碑ASP.NET是Microsoft.NET的重要组成部分,是Web应用程序开发环境。ASP.NET具有如下优点:它构建在CLR(CommonLanguageRuntime,通用语言运行时)之上,用它开发的程序可以支持异常控制、类型安全、继承和动态编译;采用Code-Behind技术来实现Web页面表示层和商业逻辑代码分离,从而实现代码的重用;组件部署简单,并且组件在使用之前不必注册;11.1.5常用开发体系结构安全机制完善,还能自动检测内存泄露,自动启动进程;有更高的执行效率ASP.NET代码是采用编译方式执行,从而可以建立高效率的Web应用程序由于在ASP.NET中使用ADO.NET对数据库进行存取。ADO.NET使用XML交换数据,其执行效率比传统的COM(ComponentObjectModel)marshalling方式快得多ADO.NET在ADO的基础上增加了许多对象如DataSet、DataReader、DataView和DataSetCommand等DataSet对象是核心,它以离线的方式存在于内存中用于读取数据,读取速度更快。11.1.5常用开发体系结构在ASP.NET中,对数据库访问可以采用三种方法来实现:利用数据库组件通过ODBC连接来实现;通过.NET中包含的用于访问企业数据库的数据提供程序SQLServer.NET来实现;通过.NET中包含的用于访问企业数据库的数据提供程序OLEDB.NET来实现。通常选用.NET中包含的用于访问企业数据库的程序来实现数据访问11.1.5常用开发体系结构MVC开发模型几乎所有现代网络开发框架都遵循了Model-View-Controller(模型-视图-控制)设计模式,简称MVC模式MVC架构模式是20世纪80年代中期在Smalltalk-80GUI(一种经典的面向对象程序设计语言)实验室发明的MVC模式将一个软件分为商务逻辑(Model)和显示(View)两部分,其好处主要有两个方面:同一商务逻辑层(Model)可能对应多个显示层(View)如果商务逻辑层和显示层放在一起,再添加一个显示层的时候就会极大地增加组件的复杂性一个商务逻辑对着两个显示层的例子是:银行帐户的商务逻辑层对应ATM和Internet两个显示层通常情况下,每次修改显示层的时候一般并不需要修改商务逻辑层11.1.5常用开发体系结构MVC模型的含义Model层一般利用组件进行设计,在复杂的商务逻辑上,提供简单并且统一的应用程序接口这一层负责管理应用程序的行为和状态,响应状态的请求和改变状态的指令View层:从Model层和Controller层获取数据,并按照某种方式显示给用户。Controller层的功能是捕捉用户的一些事件,并根据用户和应用程序的状态来决定响应的类型Controller层的响应会同时影响到View层和Model层11.1.5常用开发体系结构MVC在JSP中的设计模式使用JSP技术来实现客户页面通过Servlet技术完成大量的事务处理工作以实现用户的商业逻辑Servlet用于处理请求的事务充当控制器(Controller即“C”)的角色负责响应客户对业务逻辑的请求并根据用户的请求行为,决定将哪个JSP页面发送给客户JSP页面处于表现层,也就是视图(View即“V”)的角色JavaBean负责数据的处理,是模型(Model即“M”)的角色图11-7描述了基于JSP的MVC设计模式11.1.5常用开发体系结构目前有两种实现模型:基于Bean的MVC模型Bean可利用JavaBean实现,也可利用EJB来实现,分别构成的系统是:JavaBean(M)+JSP(V)+Servlet(C);EJB(M)+JSP(V)+Servlet©实现。EJB属于重量级的实体Bean,目前采用Spring+Hibernate框架构造企业级的应用Hibernate是一个开放源代码的对象关系映射框架它对JDBC进行了轻量级的对象封装Java程序员可随心所欲地使用对象编程思想来操纵数据库Hibernate可以应用在任何使用JDBC的场合既可以在Java的客户端程序中使用也可以在Servlet/JSP的Web应用中使用Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据的持久化11.1.5常用开发体系结构基于Struts的MVC模型Struts是Apache组织的一个项目,像其他的Apache组织的项目一样,它也是开放源代码的项目Struts是一个比较好的MVC框架提供了对开发MVC系统的底层支持采用的主要技术是Servlet、JSP和customtaglibraryStruts是一组相互协作的类、Servlet和JSP标记,它们组成一个可重用的MVC设计这个定义表示Struts是一个框架,而不是一个库Struts包含了丰富的标记库和独立于该框架工作的实用程序类目录数据库系统的体系结构11.1数据库访问技术11.2数据库应用开发实践11.3如何访问数据库中的数据DBA:通过DBMS工具来访问如SQL
Server的企业管理器、查询处理器最终用户:通过客户端工具或应用程序的GUI来访问如表单、报表等应用程序员:通过API来访问在应用程序中访问数据库访问技术数据库访问技术:为了使不同的程序员能够在各种应用程序中访问不同的数据库一组标准化的技术数据库应用程序的精髓:标准化的数据库查询语言:SQL通用的数据库访问技术:ODBC、ADO……ODBCAPI和ODBC库ODBC:OpenDataBaseConnectivity,开放数据库连接是Microsoft定义的一种数据库访问标准,一个ODBC应用程序可以访问在本地数据库上的数据,也可以进行扩展,于访问多种异构平台上的数据库。ODBC本质上是一组数据库访问的API。表面上看ODBC由一组函数组成,实质上其核心是SQL。ODBCAPI的主要功能是将SQL语句发送到目标数据库中,然后对这些语句产生的结果进行处理。ODBC库是对ODBCAPI的封装,如MFCODBC是在MicrosoftMFC中封装了ODBCAPI的产物。ODBC体系结构ODBC组件应用程序不是直接调用ODBC驱动程序,而是先调用ODBC驱动程序管理器提供的API,而ODBC驱动程序管理器再调用相应的ODBC驱动程序,这种间接的调用方式使得不管是连接到什么数据库都可以按照一致的方式来调用。应用程序通过专为DBMS编写的ODBC驱动程序,而不是直接使用DBMS的工作方式,独立于DBMS。驱动程序将这些调用转换成DBMS可使用的命令,因而简化了开发人员的工作,使得广泛的数据源都可以使用它。MFCDAODAO:DataAccessObject,数据访问对象DAO提供一组分层对象,这些对象使用MicrosoftJet数据库引擎访问下列对象中的数据和数据库结构MicrosoftJet(.MDB)数据库ODBC数据源,使用ODBC驱动程序可安装的ISAM数据库(如dBASE和Paradox)与ODBC一样,DAO提供了一组API,而MFC也提供了一组DAO类,封装了底层的API,从而简化了程序的开发DAO应用程序访问数据的原理DAO应用程序访问数据的原理DAO和Jet数据库引擎一起工作。如果该数据库是一个本地的Access数据库或者其他ISAM类型的数据库,那么Jet引擎加载相应的数据库驱动程序。如果Jet正在使用远程数据库,那么该引擎加载ODBC驱动程序管理器,利用ODBC调用来访问远程ODBC数据库。ODBC的工作依赖于数据库制造商提供的驱动程序,而DAO直接利用MicrosoftJet引擎提供的数据库访问对象集进行工作,这使得DAO在访问Access、FoxPro、dBase、Paradox、Excel等数据库时具有更好的性能。RDORDO:RemoteDataObjects,远程数据对象作为DAO的继承者,RDO将数据访问对象DAO提供的易编程性和ODBCAPI提供的高性能有效地结合在一起。DAO是一种位于MicrosoftJet引擎之上的对象层,而RDO封装了ODBCAPI的对象层。RDO没有Jet引擎的高开销,再加上与ODBC的紧密关系,使得它访问ODBC兼容的数据库(如SQLServer)时具有比DAO更高的性能。虽然RDO已被后来发展起来的ADO所取代,但是RDO与ODBC的密切关系使得RDO在某些情况下的性能比ADO更加突出。OLEDBOLEDB:ObjectLinkingandEmbedding,Database,对象链接嵌入数据库是Microsoft开发的一种高性能的、基于COM的数据库技术。OLEDB和其他Microsoft数据库技术的不同之处在于其提供通用数据访问的方式:其一是分布式查询或统一访问多个(分布式)数据源功能;其二是能够使非DBMS数据源可由数据库应用程序访问。OLEDB使用者和提供者使用OLEDB的应用程序可以分为两种:OLEDB提供者(OLEDBProvider)和OLEDB使用者(OLEDBConsumer)OLEDB提供者OLEDB使用者就是使用OLEDB接口的应用程序。OLEDB提供者则负责访问数据源,并通过OLEDB接口向OLEDB使用者提供数据。与ODBC类似,每一个不同的OLEDB数据源都是用自己相应的OLEDB提供者。SQLServer2000中包含了以下OLEDB提供者:OLEDBProviderforSQLServerOLEDBProviderforODBCOLEDBProviderforJetOLEDBProviderforDTSPackagesOLEDBProviderforOracle通过OLEDB提供者访问不同的数据源ADOADO:ActiveXDataObjects技术ADO是基于OLEDB的访问接口,它继承了OLEDB技术的优点,并且对OLEDB的接口做了封装,定义了ADO对象,简化了程序的开发。ADO是DAO/RDO的后继产物,ADO2.0在功能上与RDO更相似,区别在于:ADO是OLEDB的COM包装,允许使用任何数据源,不只是已索引的、连续的访问方法(ISAM)和基于SQL的数据库RDO是ODBC的COM包装。ODBC是一个基于C的API,允许通用用途(异类)的数据访问。但是,RDO依赖SQL作为命令语言来访问数据ADO.NETADO.NET是微软在.NETFramework中负责数据访问的类库集,它是基于在COM时代奠基的OLEDB技术以及.NETFramework的类库和编程语言发展而来的,它可以让.NET上的任何编程语言能够连接并访问关系数据库与非数据库型数据来源(例如XML,Excel或是文本文档数据),或是独立出来作为处理应用程序数据的类对象。在ADO.NET中,可以使用两个组件来访问和处理数据:.NETFramework数据提供程序(.NETDataProvider)和DataSet。.NETFramework数据提供程序.NETFramework数据提供程序用于连接到数据库、执行命令和检索结果。.NETFramework数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件:Connection对象提供与数据源的连接。Command对象使得能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader从数据源中提供高性能的数据流。DataAdapter提供连接DataSet对象和数据源的桥梁。DataAdapter使用Command对象在数据源中执行SQL命令,以便将数据加载到DataSet中,并使得DataSet中的数据更改与数据源保持一致。ADO.NETDataSetADO.NETDataSet专门为独立于任何数据源的数据访问而设计。它可以用于多种不同的数据源,用于XML数据,或用于管理应用程序本地的数据。DataSet包含一个或多个DataTable对象的集合,这些对象由数据行和数据列以及有关DataTable对象中数据的主码、外码、约束和关系信息组成。ADO.NET结构JDBCJDBC:Javadatabaseconnectivity,Java数据库连接是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法JDBC与ODBC:ODBC不适合直接在Java中使用,因为它使用C语言接口JDBCAPI对于基本的SQL抽象和概念是一种自然的Java接口。它建立在ODBC上而不是从零开始JDBC以Java风格与优点为基础并进行优化,因此更加易于使用Java程序连接数据库的方法JDBC驱动程序的类型:JDBC-ODBC桥加ODBC驱动程序:利用ODBC驱动程序提供JDBC访问本地API:这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库JDBC网络的纯Java驱动程序:这种驱动程序将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议本地协议纯Java驱动程序:这种类型的驱动程序将JDBC调用直接转换为DBMS所使用的网络协议第(3)、(4)类驱动程序将成为从JDBC访问数据库的首选方法。数据库访问技术小结(1)ODBC:第一个使用SQL访问不同关系数据库的数据访问技术DAO和RDO:ODBC使用低层接口,使用ODBC比较麻烦。
DAO是建立在MicrosoftJet基础之上的,使用DAO是最快速、最有效地连接Access数据库的方法。DAO也可以连接到非Access数据库,但是需要Jet引擎解释DAO和ODBC之间的调用,这导致了较慢的连接速度和额外的开销RDO为ODBC提供了一个COM的封装RDO的目的是简化ODBC的开发和在VisualBasic和VBA程序中使用ODBC数据库访问技术小结(2)OLEDB:OLEDB建立于ODBC之上,并将此技术扩展为提供更高级数据访问接口的组件结构OLEDB是一个针对SQL数据源和非SQL数据源(例如邮件和目录)进行操作的APIADO类似于ODBC,OLEDB也是属于低层接口,这为OLEDB的使用带来了障碍ADO是OLEDB的COM包装ADO主要为连接的数据访问而设计,这意味着不论是浏览或更新数据都必须是实时的,这种连接的访问模式占用服务器端的重要资源数据库访问技术小结(3)ADO.NET:ADO.NET满足了ADO无法满足的三个重要需求:提供了离线的数据访问模型,这对Web环境至关重要;提供了与XML的紧密集成;还提供了与.NETFramework的无缝集成JDBC:JDBC是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一的访问接口JDO:提供了透明的对象存储,存储数据对象完全不需要额外的代码(如JDBCAPI的使用)JDO提供到任何数据底层的存储功能,比如关系数据库、文件、XML及对象数据库等,使得应用可移植性更强数据库访问技术小结(4)数据访问技术的发展呈现出以下态势:高级化:即对象模型越来越简单,调用越来越容易,调用方法一般与底层无关;通用化:即能够以一种统一的方式访问各种异构数据源,如关系数据库、XML数据、文本等;高效化:得益于各种优化技术,现在的数据访问技术能够针对各种数据源采用最合适的访问技术。同时,离线的数据访问模式大大降低了与服务器的交互,也减轻了服务器的负担,提高了整体性能。数据库访问技术的选择:在.NET环境下开发应用应该首选ADO.NET在Windows平台非.NET环境下开发应用一般都可以使用ADO目录数据库系统的体系结构11.1数据库访问技术11.2数据库应用开发实践11.3ADO编程对象模型ADO提供类和对象以完成以下活动:
连接到数据源(Connection),并可选择开始一个事务;可选择创建对象来表示SQL命令(Command);可选择在SQL命令中指定列、表和值作为变量参数(Parameter);执行命令(Command、Connection或Recordset);如果命令按行返回,则将行存储在缓存中(Recordset);可选择创建缓存视图,以便能对数据进行排序、筛选和定位(Recordset);通过添加、删除或更改行和列编辑数据(Recordset);在适当情况下,使用缓存中的更改内容来更新数据源(Recordset);如果使用了事务,则可以接受或拒绝在完成事务期间所作的更改并结束事务(Connection)ADO对象模型中的对象及其说明对象说明Connection代表打开的、与数据源的连接CommandCommand对象定义了将对数据源执行的指定命令Parameter代表与基于参数化查询或存储过程的Command对象相关联的参数或自变量Recordset代表来自基本表或命令执行结果的记录的集合。任何时候,Recordset
对象所指的当前记录均为集合内的单个记录Field代表使用普通数据类型的数据的列Error包含与单个操作(涉及提供者)有关的数据访问错误的详细信息Property代表由提供者定义的ADO对象的动态特性ADO数据集合及其说明
集合说明Errors包含为响应涉及提供者的单个错误而创建的所有Error对象。Fields包含Recordset对象的所有Field对象。Parameters包含Command对象的所有Parameter对象。Properties包含指定对象实例的所有Property对象。ADO对象和数据集合之间的关系Connection对象Connection对象代表打开的、与数据源的连接用Connection对象的可执行下列操作:
在打开连接前使用ConnectionString、ConnectionTimeout和Mode属性对连接进行配置设置CursorLocation属性以便调用支持批更新的“客户端游标提供者”使用DefaultDatabase属性设置连接的默认数据库使用IsolationLevel属性为在连接上打开的事务设置隔离级别使用Provider属性指定OLEDB提供者使用Open方法建立到数据源的物理连接,使用Close方法将其断开使用Execute方法执行连接的命令,并使用CommandTimeout属性对执行进行配置使用BeginTrans、CommitTrans和RollbackTrans方法以及Attributes属性管理打开的连接上的事务(如果提供者支持则包括嵌套的事务)使用Errors集合检查数据源返回的错误通过Version属性读取使用中的ADO执行版本使用OpenSchema方法获取数据库模式信息Command对象Command对象定义了将对数据源执行的指定命令使用Command对象可进行下列操作:使用CommandText属性定义命令(如SQL语句)的可执行文本通过Parameter对象和Parameters集合定义参数化查询或存储过程参数使用Execute方法执行命令并在适当的时候返回Recordset对象执行前应使用CommandType属性指定命令类型以优化性能使用Prepared属性决定提供者是否在执行前保存准备好(或编译好)的命令版本使用CommandTimeout属性设置提供者等待命令执行的秒数通过设置ActiveConnection属性使打开的连接与Command对象关联设置Name属性将Command标识为与Connection对象关联的方法将Command对象传送给Recordset的Source属性以便获取数据Parameter对象Parameter对象代表与基于参数化查询或存储过程的Command对象相关联的参数或自变量使用Parameter对象可进行如下操作:使用Name属性可设置或返回参数名称;使用Value属性可设置或返回参数值;使用Attributes和Direction、Precision、NumericScale、Size以及Type属性可设置或返回参数特性;使用AppendChunk方法可将长整型二进制或字符数据传递给参数Recordset对象Recordset对象表示来自基本表或命令执行结果的记录集合。任何时候,Recordset对象所指的当前记录均为集合内的单个记录。使用ADO时,通过Recordset对象可对几乎所有数据进行操作。所有Recordset对象均使用记录(行)和字段(列)进行构造。可以创建所需数量的Recordset对象。打开Recordset时,当前记录位于第一个记录(如果有),并且BOF和EOF属性被设置为False。如果没有记录,BOF和EOF属性设置是True。Recordset对象可以使用MoveFirst、MoveLast、MoveNext、MovePrevious和Move方法,以及AbsolutePosition、AbsolutePage和Filter属性来重新确定当前记录的位置Recordset对象可支持两类更新:使用立即更新,一旦调用Update方法,对数据的所有更改将被立即写入基本数据源。也可以使用AddNew和Update方法将值的数组作为参数传递,同时更新记录的若干字段。如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用UpdateBatch方法在单个调用中将它们传送给数据库。Field对象Field对象代表使用普通数据类型的数据的列使用Field对象可进行如下操作:使用Name属性可返回字段名;使用Value属性可查看或更改字段中的数据;使用Type、Precision和NumericScale属性可返回字段的基本特性;使用DefinedSize属性可返回已声明的字段大小;使用ActualSize属性可返回给定字段中数据的实际大小;使用Attributes属性和Properties集合可决定对于给定字段哪些类型的功能受到支持;使用AppendChunk和GetChunk方法可处理包含长二进制或长字符数据的字段值;如果提供者支持批更新,可使用OriginalValue和UnderlyingValue属性在批更新期间解决字段值之间的差异。Error对象Error对象包含与单个操作有关的数据访问错误的详细信通过Error对象可获得每个错误的详细信息,包括:Description属性,包含错误的文本;Number属性,包含错误常量的长整型整数值;Source属性,标识产生错误的对象。在向数据源发出请求之后,如果Errors集合中有多个Error对象,则将会用到该属性;SQLState和NativeError属性,提供来自SQL数据源的信息。Property对象Property对象代表由提供者定义的ADO对象的动态特征。ADO对象有两种类型的属性:内置属性和动态属性内置属性是在ADO中实现并立即可用于任何新对象的属性,此时使用MyObject.Property语法。它们不会作为Property对象出现在对象的Properties集合中,因此,虽然可以更改它们的值,但无法更改它们的特性动态属性由基本的数据提供者定义,并出现在相应的ADO对象的Properties集合中基于VC的数据库应用开发在VisualC++中使用ADO有3种不同的方法:直接使用ADOData控件;使用智能指针操作;使用VisualC++ExtensionsforADO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化学纤维制造中的安全生产措施考核试卷
- 国有土地征收合同范例
- 化工行业中的创意设计与工业设计考核试卷
- 家庭安全提高居民的家庭安全保障考核试卷
- 印刷技术在建筑设计与装饰领域中的应用与创新考核试卷
- 灌装机械设备合同范例
- 官方 合同模板
- 景区游船采购合同范例
- 物业违约合同范例
- 木门工地订货合同范例
- 机电安装单价表
- MSDS(T-09)快干水2x3
- 隧道衬砌环向裂缝的成因分析及预防建议
- 浅谈语文课程内容的横向联系
- 《烧烫伤的现场急救》ppt课件
- 职业卫生防护设施台账
- 危重新生儿的病情观察及护理要点
- 中国民航数据通信网项目情况介绍
- 旅游景区管理制度
- 五篇500字左右的短剧剧本
- 新形势下如何加强医院新闻宣传工作
评论
0/150
提交评论