《第7章 数据库应用编程.ppt》由会员分享,可在线阅读,更多相关《第7章 数据库应用编程.ppt(58页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据库应用技术第七章数据库应用编程数据库应用系统数据库应用系统:利用DBMS以及其他编程工具,结合行业或部门实际应用需求,开发出以数据处理为主要用途的,适合使用的应用系统。数据库应用系统的部署服务器和工作站、通过网络连接系统软件和应用软件各个组成部分的相互关系,构成一个数据库应用系统的体系结构集中式结构开发简单维护容易主机能够提供较高的计算能力和储存能力成本高昂集中式结构-文件服务器模式使用文件方式存储数据库中的数据应用程序在微机上访问共享数据结构简单,但效率较低,且存在并发问题早期的系统(如Foxpro)使用较多客户端/服务器结构DBMSDBOSNetwork服务器NetworkOSGUI客
2、户端NetworkOSGUI客户端C/S结构优点开放性:支持异构型结构充分利用不同的计算资源分布性可扩展性强数据一致性强编程方便编程相对简单计算效率较高界面更加友好C/S结构缺点缺点应用程序安装、分发、升级困难客户端可直接访问数据库,存在安全隐患连接数少,并发和吞吐量小不适当的应用程序增大网络传输量存在集中结点,依赖于服务器改进:更加合理的应用程序细致的安全性措施使用存储过程等C/S结构编程工具常见的通用编程语言,带有GUI设计能力和数据库接口即可如C/C+,在Windows下扩展MFC进行GUI设计,使用ODBC等接口访问数据库。其他如 VB,Delphi,C#,PowerBuilder界面
3、编程和业务逻辑编程没有明确区分适用于Intranet应用浏览器/服务器结构Web服务器是飞速发展的Internet上最典型的应用模式静态网站Web服务器以文件为载体通过网络的HTPP协议传送内容在客户端使用浏览器显示HTML内容动态网站使用Web服务器存取数据库的内容,从而能够存储用户操作数据,网站内容可以随时变化传统的文件型WEB服务器HTTP请求HTTP回应服务器端客户端Page1.htmPage2.htmPage1.htmB/S结构HTTP请求(表单)服务器端客户端数据库HTTP回应(由数据库数据拼成的HTML页面)SQLODBCSQLB/S结构特点无需安装客户端程序分发,升级容易客户端
4、不能直接访问数据库,更加安全并发规模大支持Internet及IntranetB/S结构的关键技术数据库服务器应用服务器应用服务器的主要指标是提供基本的WWW服务,支持各种数据库访问技术,易于管理和配置应用系统。应用服务器访问数据库服务器使用和C/S结构类似的接口方式应用表示方式应用服务器根据用户的请求从数据库服务器中提取相关数据生成中间文件,通过HTTP协议传送到浏览器。使用的标记语言有3种:HTML、DHTML及XML。还有其他的表示方式,如json浏览器在Internet环境中常用的浏览器包括Microsoft的InternetExplorer(简称IE),目前占有率较高的还有Firefo
5、x,Safari,Chrome等。它们都支持Internet的标准通信协议,但在一些细节方面,还具有很多不相互兼容的地方,这些也给程序员造成了一定的麻烦。B/S结构编程Web服务器端CGI、SAPI脚本语言PHP、ASP、JSP、Ruby浏览器端HTMLCSSJavaScriptFlash等Web数据库访问技术CGI(CommonGatewayInterface)是Web服务器运行时外部程序的规范,按照CGI编写的程序可以扩展服务器的功能,完成服务器本身不能完成的工作,外部程序执行时可以生成HTML文档,并将文档返回Web服务器。CGI程序的常用语言:Perl、C/C+、VB、DelphiCG
6、I的缺点:每个CGI程序应用是作为一个独立外部应用来运行的,与服务器上其他程序竞争处理器资源,这将导致运行速度减慢;不提供状态管理功能,浏览器每次请求都需要一个连接的建立与释放过程,效率较低。Web数据库访问技术SAPI(ServerApplicationProgrammingInterface)服务器端应用程序编程接口:与CGI功能相同,也可用于实现扩展服务器功能。实际是一组用于完成特定功能的很复杂的函数、消息和结构,包含在一个扩展名为DLL的动态连接库文件中。与CGI相比,性能上有了很大的提高,但开发需编程方面的专门知识。脚本语言脚本语言(Script)是为了缩短传统的编写-编译-链接-运
7、行(edit-compile-link-run)过程而创建的计算机编程语言。以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则特点:语法和结构通常比较简单学习和使用通常比较简单通常以容易修改程序的“解释”方式运行程序的开发产能优于运行效能Web数据库访问技术PHP(PHP:HypertextPreprocessor)优点:开源、灵活、简单易学、跨平台、有良好数据库交换能力的开发语言;与Apache及其扩展库紧密结合;良好的安全性。不足:缺少企业级的支持;难以支持复杂业务逻辑;LAMP=Linux+ApacheMysql+PhpWeb数据库访问技术ASP(ActivexServerP
8、ages)由微软创建的Web应用开发标准,ASP服务器已经包含在IIS服务器中,使用VBScript作为开发语言。优点:安装配置方便,开发简单易学;开发工具功能强大。不足:ASP使用了COM组件因而导致大量的安全问题;只能应用于Windows平台。.Net、ASP、C#关系.net是一个开发和运行平台,可以兼容多种语言,可在不同应用场景发布。C#是一种融合Java和C+特性的语言,是.net上的典型语言ASP.net是继承ASP的web程序开发和应用平台。在ASP.net上可以使用C#、VB.net,J#等多种语言。Web数据库访问技术JSP(JavaServerPages)&J2EEJSP(
9、JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。优点:可移植性好,支持多种平台;强大的可伸缩性;多样化与强大的工具支持。不足:安装配置管理较为复杂;运行速度较慢;Web数据库访问技术J2EE(Java2Platform,EnterpriseEdition)J2EE是一种利用Java2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、
10、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台,J2EE降低了 开发多层应用的费用和复杂性J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制。适合开发大型应用系统B/S结构编程的一些难点问题无状态的HTTP协议与Session连接池分页权限控制HTML的功能有限C/S架构与B/S架构对比C/S架构B/S架构采用Intranet技术,适用于局域网环境技术适用于广域网环境可连接用户数有限,当用户数量增多时性能会明显下降支持更多的客户,可根据访问量动态配置Web服务器以保证系统性能客户端都要安装用户程序客户端只需标准的浏览器系统扩展维护复杂系统扩展维护简单开发费用较低,
11、开发周期较短开发费用较高,开发周期较长高级体系结构-中间件中间件(middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。降低DB服务器工作量和网络流量;实现业务逻辑软件可复用;易于应用程序升级;提供更高级别的安全性客户端浏览器Web服务器中间件数据库服务器高级体系结构-RIARIA(RichInternetApplications)富互联网应用具有高度互动性、丰富用户体验以及功能强大的客户端。用户界面可以显示和操作更为复杂的嵌入在客户端的数据模型它可以操作客户端的计算和非同步的发送接收数据。HTML只给用户提供了非常有限的界面控制元素,而RI
12、A的用户界面提供了灵活多样的界面控制元素主要技术Ajax,JavaScriptFlash,SilverlightXML,Json RPC,SaaS7.2 数据库接口直接驱动连接优点:效率高通过抽象层连接数据库网关通用的数据库接口协议和编程模式为什么需要通用的数据库接口程序员需要使用不同的程序接口、DBMS方言、网络协议这将导致程序的通用性、灵活性、可维护性大大降低。最重要的是增大程序员的学习难度和实际数据库移植的“神话”常见的通用数据库接口ODBC(开放数据库互连)MFC(Microsoft基础类)ODBC类JDBCADO(ActiveX数据对象)OLEDB(对象链接嵌入数据库)DAO(数据访
13、问对象)主要用于桌面型数据库AccessRDO(远程数据对象)开放数据库互连-ODBCODBC是80年代末出现的技术,它为编写关系数据库的客户软件提供了统一的接口。ODBC只提供单一的API,可用于处理不同数据库的客户应用程序。使用ODBCAPI的应用程序可以与任何具有ODBC驱动程序的关系数据库进行通信。基于X/Open与 ISO/IEC的数据库CLI标准和SQL语言ODBC2.0,3.0,3.1,3.51现在已经被广泛应用,并逐渐成为关系数据库接口的标准。ODBC仅限于关系数据库ODBC的组成应用程序驱动程序管理器DBMS驱动程序数据源用户想要存取的数据来源、操作系统、协议以及其他信息的组
14、合。ODBC的优点通用性,DBMS透明性工业标准,得到大部分DBMS支持可移植性,支持不同的操作系统包括Windows、Unix/Linux提供不同的符合性级别驱动程序支持相应的符合性级别,不表示DBMS能够实现相应的操作。Core级别、LEVEL1、LEVEL2ODBC的MFC类 ODBC为关系数据库提供了统一的接口,但是ODBCAPI十分复杂。在MFC中,提供了一些类,对ODBCAPI进行封装,为ODBC编程提供了一个面向对象的方法。MFCODBC类在使用上比ODBCAPI容易,但是损失了ODBCAPI对低层的灵活控制,因此,MFCODBC类属于高级数据库接口。OLE DB与ADO OLE
15、DB也属于低层的数据库编程接口,OLEDB结合了ODBC对关系型数据库的操作功能,并进行了扩展,可以访问非关系型数据库源。OLEDB对ODBC进行了两个方面的扩展:一是提供了一个数据库编程的OLE接口,即COM;二是提供了一个可用于关系型和非关系型数据源的接口。OLE DB与ADOOLEDB的客户程序和供应程序 OLE DB与ADOADO是ActiveXDataObject的缩写,它建立在OLEDB之上,为操作OLEDB数据源提供了一套高层次自动化接口。ADO实际上是一个OLEDB客户程序,使用ADO的应用程序要间接地使用OLEDB。ADO提供了一种数据库编程对象模型,类似于DAO的对象模型,
16、但比DAO有更高的灵活性。ADO简化了OLEDB,属于高层的数据库接口。另外同OLEDB相比,能够使用ADO的编程语言更多。OLE DB与ADOADO同OLEDB、数据库应用以及数据源之间的关系 各种访问接口的比较访问接口访问接口易用性易用性运行性能运行性能可扩展性可扩展性突出特点突出特点能能 否否访访 问问 非非关关 系系 数数据据源技术层次源技术层次缺陷缺陷ODBC差较高差可进行底层控制,跨平台否底层非 面向对象MFC for ODBC好一般好应用广泛否高层DAO好较高一般访问jet性能最好能高层非 本机速度慢OLE DB较难高好可访问非关系db能底层ADO最好高好可访问非关系,有多种编程
17、接口能高 层,基于COMJava Data Base ConnectivityJDBC是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 JavaAPI编写数据库应用程序JDBC驱动程序的类型 JDBC-ODBC桥将JDBC调用转化为ODBC调用的“桥梁”,通过ODBC驱动程序来提供JDBC对数据库的访问。本机API,部分Java驱动(Native-APIPartly-JavaDriver)将JDBC调用转换为基于客户
18、端API的调用。网络纯Java驱动(Net-ProtocolAll-JavaDriver)将JDBC转换为与DBMS无关的网络协议,之后这种协议又被某个服务器转换为一种DBMS协议。本地协议纯Java驱动(Native-ProtocolAll-JavaDriver)将JDBC调用转换为特定数据库直接使用的网络协议,这一类驱动程序通常由数据库厂商自己开发。7.3数据库访问编程技术嵌入式直接将SQL嵌入宿主语言(如C)中,使用预编译器函数API典型的如ODBC面向对象典型的如MFCforODBC,ADO,JDBC面向组件如各种直观的开发工具,Delphi等数据库编程接口的基本功能连接到数据库直接执
19、行SQL语句执行复杂SQL语句 能够使用程序变量作为SQL语句的参数能够使用游标等类似机制将查询结果传送到程序变量中事务处理错误处理使用ODBC的访问方法句柄 Handle环境句柄连接句柄语句句柄使用ODBC的访问方法基本流程:申请环境句柄 申请连接句柄连接DSN执行SQL断开DSN释放连接句柄释放环境句柄使用ODBC的访问方法直接执行SQL申请语句句柄执行SQL语句关闭/释放语句句柄执行复杂SQL申请语句句柄准备SQLPrepare参数绑定SQLBindParameter列绑定 SQLBindCol执行 SQLExecute取结果集 SQLFetch(循环)释放/关闭语句句柄ADO:面向对象
20、的访问方法用Connection对象连接数据库用RecordSet对象控制数据用Command对象执行数据库操作ADO编程:Connection对象Connection对象用于建立和管理应用程序与数据源间的连接,也可用它来执行一个命令。创建Connection连接数据源执行SQL查询Connection对象的Execute方法ADO编程:RecordSet对象Recordset对象是一个记录的集合,是按字段(或列)和记录(或行)的形式构成的二维表。Recordset对象相当于一个游标每个Recordset对象表示表中的记录或运行一次查询所得到的结果。可以在非显式打开Connection对象的情
21、况下,打开一个Recordset对象(如执行一次查询),或者创建一个Connection对象,然后在该Connection对象上打开多个Recordset对象。使用Recordset对象,可以在记录一级上对数据库中的数据进行各种操作,如增删记录、更新数据、在记录中移动等。ADO编程:Command对象Command对象用于对数据源执行指定的命令,这些命令可以是SQL语句、表、存储过程或其他数据提供者支持的文本格式。Connection对象提供客户端应用程序与数据库之间的连接通道,Recordset对象用来记录由数据库取得的数据集对象,Command对象则用来传递信息,它可以对数据库提出查询信息
22、,把符合要求的数据存放在Recordset对象中返回。脚本语言连接数据库:PHP?php/连接,选择数据库$link=mysql_connect(mysql_host,mysql_user,mysql_password)ordie(Couldnotconnect:.mysql_error();echoConnectedsuccessfully;mysql_select_db(my_database)ordie(Couldnotselectdatabase);/执行SQL查询$query=SELECT*FROMmy_table;$result=mysql_query($query)ordie(Q
23、ueryfailed:.mysql_error();/用HTML显示结果echon;脚本语言连接数据库:PHPwhile($line=mysql_fetch_array($result,MYSQL_ASSOC)echotn;foreach($lineas$col_value)echott$col_valuen;echotn;echon;/释放结果集mysql_free_result($result);/关闭连接mysql_close($link);?7.4 业务应用系统的多层架构在软件架构中,基于数据库的业务应用系统通常被划分为多个软件层次优点:1、开发人员可以只关注整个结构中的某一层;2、可
24、以很容易的用新的实现来替换原有层次的实现;3、可以降低层与层之间的依赖;4、有利于标准化;5、利于各层逻辑的复用。缺点:1、系统性能降低。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。2、可能会导致级联的修改。必须事先充分全面设计。3、各层间的通信机制必须完备J2EE的多层架构客户端层组件应用客户端程序和浏览器Web层组件JavaServletJavaServerPages(JSP)业务层组件EnterpriseJavaBeans(EJB)企业信息系统层组件:DB、ERP微软推荐的三层结构表现层(UI)展现给用户的界面层,即用户在使用一个系统
25、的时候他的所见所得。业务逻辑层(BLL)多个数据访问构成一个完整的,符合业务规则的操作集合。业务规则的制定、业务流程的实现。数据访问层(DAL)操作数据库,对数据进行增、删、改、查。也叫做持久层MVC架构模型层(Model)负责表达和访问商业数据,执行商业逻辑和操作。视图层(View)负责显示模型层的内容。控制层(Controller)负责定义应用程序的行为。数据库持久化与ORM持久化(Persistence),把数据(特别是以面向对象方式形成的数据)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型数据库中,或者磁盘文件中、XML数据文件中等。ORM是一种常见的持久化技术对象关系映射ORMORM是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术,实现程序对象到关系数据库数据的映射。ORM通过使用描述类与对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。映射关系每个类映射一个表类的简单数据类型的属性映射表中的一个字段类之间关系映射为表之间的外键关联一个开发架构实例源自:http:/
限制150内