资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Slide Title,Body Text,Second level,Third level,Fourth level,Fifth level,单击此处编辑母版标题样式,编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,9,章,数据库应用程序开发,9.1,数据库应用程序设计方法,9.2,数据库应用程序的体系结构,9.3,数据库与应用程序的接口,9.4,数据库应用程序开发,9.1 数据库应用程序设计方法,1. 结构特性设计,结构特性的设计是指数据库结构的设计。其结果是得到一个合理的数据模型,以反映现实世界中事物间的联系,它包括各级数据库模式(模式、外模式和内模式)的设计。,返回首页,2.,行为特性设计,行为特性的设计是应用程序设计,包括功能组织、流程控制等方面的设计。其结果是根据行为特性设计出数据库的外模式,然后用应用程序将数据库的行为和动作(如数据查询和统计、事物处理及报表处理)表达出来。,返回本节,9.2 数据库应用程序的体系结构,9.2.1 主机集中型结构,9.2.2 文件型服务器结构,9.2.3 二层客户/服务器(,C/S),结构,9.2.4 三层客户/服务器结构,返回首页,9.2.1 主机集中型结构,主机集中型结构的数据库应用系统一般在一台主机(大型计算机或小型计算机)带多台终端的环境下运行,这种结构在20世纪6070年代比较盛行。在这种结构的数据库应用程序中,数据库的存储、计算、读取与应用程序的执行,全部集中在后端的主机上执行。用户通过前端的终端输入信息传至主机处理,主机处理完成后将处理的结果返回到前端的终端显示给用户。其结构如图9-2所示。,返回本节,9.2.2 文件型服务器结构,到了20世纪80年代,随着苹果计算机、,IBM,个人计算机的诞生,其开放性的结构、日渐平易近人的价格,以及愈来愈强的执行性能,已为一般企业所能负担,而文件型数据库应用程序也就在此时趁势崛起。在文件型数据库应用程序中,数据存放在文件型数据库中,如早期的,dBaseIII,,到今天的,Access,,就是一些拥有高知名度的文件型数据库。存放数据库文件的服务器作为文件服务器使用,应用程序的数据运算和处理逻辑则存放在前端的工作站中。其体系结构如图9-3所示。,例如:在数据库中有一客户表,共有10,000条客户资料。现假设想找出客户编号为00001的客户信息,则文件型数据库应用程序处理这个请求的方法是:,(1)先把这10,000条客户数据从文件服务器通过局域网传至前端工作站。,(2)前端工作站再从这10,000条客户数据中查找客户编号为00001客户信息。,(3)查询作业结束后,再把这10,000条记录返回到文件服务器。,返回本节,9.2.3 二层客户/服务器(,C/S),结构,为了解决费用和性能的矛盾,客户/服务器(,C/S),结构就应运而生了。该结构是由一组性能良好且稳定的主机来做数据库服务器,然后连上一群充当客户机的工作站而成。在这种结构中,数据库的管理由数据库服务器完成,应用程序的数据处理,如数据访问规则、业务规则、数据合法性校验等则可能有两种情况:一是全部由客户机来完成,客户机向服务器传送的是结构化查询语言,SQL;,二是由客户机和服务器共同来承担,程序处理一部分在客户端以程序代码来实现,一部分在服务器端以数据库中的触发器或存储过程实现,客户机向服务器传送的是,SQL,或要进行处理的参数。其系统结构如图9-4所示,图9-4客户/服务器结构,以同样要从10,000条客户数据记录中,找出客户编号为00001的客户信息,客户/服务器结构对这种请求的处理方式是:,(1)前端客户机向后端数据库服务器发出请求。,(2)数据库服务器在收到前端客户机的请求后,自客户表中找出编号为00001的客户信息。,(3)数据库服务器再把查询到的结果传至前端客户机。,由于这种通信方式简单,软件开发起来容易,现在很多的应用软件都是基于这种二层的客户/服务器模式的,但这种结构模式的软件存在以下问题:,伸缩性差。,性能较差。,重用性差。,移植性差。,返回本节,9.2.4 三层客户/服务器结构,分离的目的是使客户机上的所有处理过程不直接涉及到数据库管理系统,分离的结果将应用程序在逻辑上分为三层:,用户服务层:提供信息浏览和服务定位。主要是实现用户界面,并保证用户界面的友好性、统一性。,业务处理层:实现数据库的存取及应用程序的商业逻辑计算。,数据服务层:实现数据定义、存储、备份和检索等功能,主要由数据库系统实现。,图9-5三层客户/服务器结构,三层结构的系统具有如下特点:,(1)业务逻辑放置在中间层可以提高系统的性能,使中间层业务逻辑处理与数据层的业务数据紧密结合在一起,而无需考虑客户的具体位置。,(2)添加新的中间层服务器,能够满足新增客户机的需求,大大地提高了系统的可伸缩性。,(3)将业务逻辑置于中间层,从而使业务逻辑集中到一处,便于整个系统的维护和管理及代码的复用。,一个基于,Web,的应用程序在逻辑上可能包含如下几层:,1,层,由,Web,浏览器实现的一个客户层的界面。,2,层,由,Web,服务器实现的一个中间层的任务分配机制。,3,层,由一些服务器端脚本实现的中间层服务。,4,层,由关系数据库实现的数据层存储机制。,图9-6互联网应用程序结构,返回本节,9.3 数据库与应用程序的接口,9.3.1,ODBC,9.3.2,一致数据访问技术,UDA(Universal Data Access),9.3.3 JDBC,返回首页,9.3.1,ODBC,1,ODBC,的体系结构,2管理数据源,1,ODBC,的体系结构,ODBC,的体系结构如图9-7所示,它由数据库应用程序、驱动程序管理器、数据库驱动程序和数据源四部分组成。,(1)数据库应用程序。,(2)驱动程序管理器,(3)数据库驱动程序。,(4),ODBC,数据源。,2,管理数据源,(1)启动,ODBC,驱动程序管理器。选择“我的电脑”“控制面板”“管理工具”,双击“数据源(,ODBC)”,图标打开,ODBC,数据源(驱动程序)管理器,如图9-8所示。,(2)选择,ODBC,驱动程序。切换到“系统,DSN”,标签页,单击“添加(,D)”,按钮,将弹出如图9-9所示的对话框,选择数据源驱动程序,SQL Server,,单击“完成”按钮。,(3)输入,ODBC,数据源名称,选择数据源的,SQL,服务器。在图9-10中,将数据源命名为,LocalServer,,服务器选择为,local,,单击“下一步”按钮。,(4)登录身份配置。在图9-11中,选择登录到,SQL Server,的安全验证信息,选中“使用网络登录,ID,的,Windows NT,验证”复选框,客户端配置为默认值。,(5)选择连接的默认数据库。如图9-12所示,将默认的数据库改为,Northwind,数据库(此数据库是安装,SQL Server 2000,时用于演示的示范数据库)。,(6)在图9-13中,可以设置,SQL Server,的系统消息,如语言、货币、时间、数字格式以及日志等(一般保持默认设置即可)。,图9-8“系统,DSN”,选项卡,图9-9 “创建数据源”对话框,图9-10输入,DSN,的名称并指定,SQL Server,所在的服务器,图9-11选择,SQL Server,验证登录的,ID,方式,图9-12更改默认的数据库,图9-13,SQL Server DSN,配置对话框,图9-14“,ODBC Microsoft SQL Server,安装”对话框,返回本节,9.3.2,一致数据访问技术,UDA(Universal Data Access),1,OLE DB,2,ADO,(,ActiveX Data Object,),3,一致性访问技术的体系结构,1,OLE DB,继,ODBC,之后,微软又推出了,OLE DB。,简单地说,,OLE DB,是一种技术标准,目的是提供一种统一的数据访问接口。这里所说的“数据”,除了标准的关系型数据库中的数据之外,还包括邮件数据、,Web,上的文本或图形、目录服务,以及主机系统中的,IMS,和,VSAM,数据。,OLE DB,标准的核心内容就是要求为以上这些各种各样的数据存储(,Data Store),都提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。,OLE DB,将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这种组件模型中的各个部分被冠以不同的名称。,数据提供者:包含数据并将数据输出到其他组件中去。提供者大致分为两类:数据提供者和服务提供者。,业务组件:利用数据服务提供者、专门完成某种特定业务信息处理、可以重用的功能组件。,消费者:是使用,OLE DB,对存储在数据提供者中的数据进行控制的应用程序。,2,ADO,(,ActiveX Data Object,),ADO,是,OLE DB,的消费者,与,OLE DB,提供者一起协同工作。它利用低层,OLE DB,为应用程序提供简单高效的数据库访问接口,,ADO,封装了,OLE DB,中使用的大量,COM,接口,对数据库的操作更加方便简单。,ADO,实际上是,OLE DB,的应用层接口,这种结构也为一致的数据访问接口提供了很好的扩展性,而不再局限于特定的数据源,因此,,ADO,可以处理各种,OLE DB,支持的数据源。,3一致性访问技术的体系结构,一致性访问技术的体系结构即使用,ADO,和,OLE DB,获取数据的体系,结构如图9-16所示。,从图中可以看出,应用程序既可以通过,ADO,访问数据也可以直接通过,OLE DB,访问数据,而,ADO,则通过,OLE DB,访问底层数据。,返回本节,9.3.3 JDBC,1,JDBC,的工作原理,用,JDBC,开发,Java,数据库应用程序的工作原理如图9-17所示。,2,JDBC API,组成部分,JDBC API,共分为两个不同的层:应用程序层是前端开发人员用来编写应用程序的;驱动程序层是由数据库厂商或专门的驱动程序生产厂商开发的。前端开发人员可以不必了解其细节信息,但是在运行使用应用程序层,JDBC,的程序之前,必须保证巳经正确地安装了这些驱动程序。具体来说,,JDBC API,包括5个组成部分,如图9-18所示。,JDBC API,包括5个组成部分,(1)驱动程序管理器(,Driver Manager)。,(2)驱动程序(,Driver)。,(3)连接(,Connection)。,(4)语句(,Statement)。,(5)结果(,ResultSet)。,返回本节,9.4,数据库应用程序开发,下面就以此表为例,讲解数据库应用程序开发的过程。,字段代码,字段名称,字段类型,长度,小数,是否为空,BOOKID,书号,char,20,NOT NULL,BOOKNAME,书名,varchar,20,NOT NULL,EDITER,作者,varchar,8,NULL,PRICE,价格,money,NULL,PUBLISHER,出版社,varchar,20,NULL,QTY,库存数量,int,NOT NULL,假设在数据库设计的实施阶段,已在,SQL Server 2000,下建立了“图书管理系统”,BOOKSYS,数据库,并在此数据库中建立了所有的表。其中,BOOK,表的结构为:,返回首页,1,用,VB6,访问数据库,(1)启动,VB6,,新建一个标准工程,如图9-19所示。然后单击“打开”按钮。,(2)在工程中引用,ADO,组件。,(3)为工程加载,MSFlexGrid,控件。,(4)设计图书查询窗体,SelBook,的界面,添加一个标签页及一个,MSFlexGrid,控件,如图9-22所示。,(5)为图书查询窗体添加代码。在工程资源管理器中,选中,SelBook,窗体,在菜单栏单击“视图”“代码窗口”,进入,SelBook,窗体的代码设计状态,输入如下的代码,(略),(6)在菜单栏上,单击“工程”“工程属性”,将弹出工程属性对话框,如图9-23所示。在启动对象下拉列表中选择,SelBook。,(7),编绎并运行该程序,运行结果如图9-24所示。,图9-19新建一个标准工程,图9-20引用,ADO,组件,图9-21加载,MSHlexGrid,控件,图9-22图书查询窗体设计,图9-23工程属性对话框,图9-24图书查询运行结果(,VB,数据库应用程序),2,用,Java,访问数据库,下面同样以,books,表的查询操作为例,讲解,Java,通过,JDBC API,操作数据库的方法和步骤。程序代码(,SelBook.java),如下:,import java.sql.*;,public class SelBook1 ,public static void main(String args) ,try,/,加载数据库驱动程序,Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);,/,连接数据库,Connection conn=,DriverManager.getConnection(jdbc:odbc:SelBook,);,/,创建一个,SQL,语句,Statement stmt=conn.createStatement() ;,/,查询,books,表,并将结果集放在结果集对象中,ResultSet rs=stmt.executeQuery(select *from book);,/,下面的语句为输出查询结果,System.out.println(,图书查询结果:);,System.out.println(t,图书号,tt,图书名,ttt,作者,t,价格,t,出版社,ttt,数量);,while(rs.next(),System.out.print(t+rs.getString(1);,System.out.print(t+rs.getString(2);,System.out.print(t+rs.getString(3);,System.out.print( +rs.getDouble(4);,System.out.print(t+rs.getString(5);,System.out.print(t+rs.getInt(6); System.out.println();, conn.close();,catch(Exception e)e.printStackTrace();,运行上面的,Java,程序,得到图书查询的运行结果(,Java,数据库应用程序)。,图书查询结果:,返回本节,小结,本章首先介绍了开发数据库应用程序的整个过程,然后介绍数据库应用程序的4种体系结构,从最开始的集中式、到文件服务器方式,再到现在应用范围非常广泛的客户/服务器方式,以及目前日益兴起的基于,B/S,结构的多层客户/服务器结构。,数据库应用程序需通过数据访问接口才能访问数据库,数据访问接口分为专用接口和通用接口两种。专用接口是每个数据库管理系统提供的专用数据访问接口。通用接口的思想是,Microsoft,提出的,通过这些通用接口,用户可以访问不同的数据库管理系统,这样极大简化和方便了用户对数据库的访问。,本章的最后,通过两个流行数据库应用程序开发工具,Visual Basic,和,Java,,介绍了使用架构在,OLE DB,之上的,ADO,组件和,JDBC,提供的,JDBC API,访问数据库的方法,以使同学们建立起开发应用程序的基本思路。,5,、世上最美好的事是:我已经长大,父母还未老,;,我有能力报答,父母仍然健康。,6,、没什么可怕的,大家都一样,在试探中不断前行。,7,、时间就像一张网,你撒在哪里,你的收获就在哪里。纽扣第一颗就扣错了,可你扣到最后一颗才发现。有些事一开始就是错的,可只有到最后才不得不承认。,8,、世上的事,只要肯用心去学,没有一件是太晚的。要始终保持敬畏之心,对阳光,对美,对痛楚。,9,、别再去抱怨身边人善变,多懂一些道理,明白一些事理,毕竟每个人都是越活越现实。,10,、山有封顶,还有彼岸,慢慢长途,终有回转,余味苦涩,终有回甘。,11,、人生就像是一个马尔可夫链,你的未来取决于你当下正在做的事,而无关于过去做完的事。,12,、女人,要么有美貌,要么有智慧,如果两者你都不占绝对优势,那你就选择善良。,13,、时间,抓住了就是黄金,虚度了就是流水。理想,努力了才叫梦想,放弃了那只是妄想。努力,虽然未必会收获,但放弃,就一定一无所获。,14,、一个人的知识,通过学习可以得到,;,一个人的成长,就必须通过磨练。若是自己没有尽力,就没有资格批评别人不用心。开口抱怨很容易,但是闭嘴努力的人更加值得尊敬。,15,、如果没有人为你遮风挡雨,那就学会自己披荆斩棘,面对一切,用倔强的骄傲,活出无人能及的精彩。,5,、人生每天都要笑,生活的下一秒发生什么,我们谁也不知道。所以,放下心里的纠结,放下脑中的烦恼,放下生活的不愉快,活在当下。人生喜怒哀乐,百般形态,不如在心里全部淡然处之,轻轻一笑,让心更自在,生命更恒久。积极者相信只有推动自己才能推动世界,只要推动自己就能推动世界。,6,、人性本善,纯如清溪流水凝露莹烁。欲望与情绪如风沙袭扰,把原本如天空旷蔚蓝的心蒙蔽。但我知道,每个人的心灵深处,不管乌云密布还是阴淤苍茫,但依然有一道彩虹,亮丽于心中某处。,7,、每个人的心里,都藏着一个了不起的自己,只要你不颓废,不消极,一直悄悄酝酿着乐观,培养着豁达,坚持着善良,只要在路上,就没有到达不了的远方!,8,、不要活在别人眼中,更不要活在别人嘴中。世界不会因为你的抱怨不满而为你改变,你能做到的只有改变你自己!,9,、欲戴王冠,必承其重。哪有什么好命天赐,不都是一路披荆斩棘才换来的。,10,、放手如拔牙。牙被拔掉的那一刻,你会觉得解脱。但舌头总会不由自主地往那个空空的牙洞里舔,一天数次。不痛了不代表你能完全无视,留下的那个空缺永远都在,偶尔甚至会异常挂念。适应是需要时间的,但牙总是要拔,因为太痛,所以终归还是要放手,随它去。,11,、这个世界其实很公平,你想要比别人强,你就必须去做别人不想做的事,你想要过更好的生活,你就必须去承受更多的困难,承受别人不能承受的压力。,12,、逆境给人宝贵的磨炼机会。只有经得起环境考验的人,才能算是真正的强者。自古以来的伟人,大多是抱着不屈不挠的精神,从逆境中挣扎奋斗过来的。,13,、不同的人生,有不同的幸福。去发现你所拥有幸运,少抱怨上苍的不公,把握属于自己的幸福。你,我,我们大家都可以经历幸福的人生。,14,、给自己一份坚强,擦干眼泪;给自己一份自信,不卑不亢;给自己一份洒脱,悠然前行。轻轻品,静静藏。为了看阳光,我来到这世上;为了与阳光同行,我笑对忧伤。,15,、总不能流血就喊痛,怕黑就开灯,想念就联系,疲惫就放空,被孤立就讨好,脆弱就想家,不要被现在而蒙蔽双眼,终究是要长大,最漆黑的那段路终要自己走完。,5,、从来不跌倒不算光彩,每次跌倒后能再站起来,才是最大的荣耀。,6,、这个世界到处充满着不公平,我们能做的不仅仅是接受,还要试着做一些反抗。,7,、一个最困苦、最卑贱、最为命运所屈辱的人,只要还抱有希望,便无所怨惧。,8,、有些人,因为陪你走的时间长了,你便淡然了,其实是他们给你撑起了生命的天空;有些人,分开了,就忘了吧,残缺是一种大美。,9,、照自己的意思去理解自己,不要小看自己,被别人的意见引入歧途。,10,、没人能让我输,除非我不想赢!,11,、花开不是为了花落,而是为了开的更加灿烂。,12,、随随便便浪费的时间,再也不能赢回来。,13,、不管从什么时候开始,重要的是开始以后不要停止;不管在什么时候结束,重要的是结束以后不要后悔。,14,、当你决定坚持一件事情,全世界都会为你让路。,15,、只有在开水里,茶叶才能展开生命浓郁的香气。,
展开阅读全文