




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第,10,章,中间件技,术,本章重要概念,1,中间件的定义和作用,2,ODBC,分层的体系结构:应用程序,驱动,程序管理器,DB,驱动程序,ODBC,数据源,3,ODBC,接,口,应,用,程,序,基,本,流,程,ODBC,句柄,ODBC,连接,SQL,语句的执行,ODBC,两套符合性级别。典型的,DB,应用系统,开发工具,4,JDBC,的基本功能,JDBC,的结构,JDBC,接口,前言,对于那些相对独立的软件供应商而言,经常要为每一个,DBMS,编写一个版本的应用程序,或者为每个要访问的,DBMS,编写针对,DBMS,的代码。这就意味着,大量的资源都,耗在了编写和维护,DB,的访问上,更不用说
2、应用程序了。此,时应用程序的评价标准不再是质量,而是它能否在给定的,DBMS,中访问数据库,这就需要开放的数据库连接,就是人们需要用一种新的方法,来访问不同的数据库。为此,在,C/S,系统中必须广泛使用中,间件技术,以隐藏各种复杂性,屏蔽各种系统之间的差异,ODBC,技术和,JDBC,技术就是这种优秀的中间件技术,10.1.1,中间件的定义,定义,10.1,中间件,middleware,是分布式环,境中保证操作系统、通信协议、数据库等之,间进行对话、互操作的软件系统,10.2.2,中间件的作用,中间件的作用是保证网络中各部件(软件和硬件)之间透,明地连接,即隐藏网络部件的异构性,尤其保证不同网
3、络,不同,DBMS,和某些访问语言的透明性,即下面三个透明性,网络透明性:能支持所有类型的网络,服务器透明性:不管服务器上的,DBMS,是何种型号,ORACLE,SYBASE,DB2,等),一个好的中间件都能,通过标准的,SQL,语言与不同,DBMS,上的,SQL,语言连接起来,语言透明性:客户机可用任何开发语言进行发送请求和接,受回答,被调用的功能应该像语言那样也是独立的,10.2.1 ODBC,概念,应用程序,应用程序,应用程序,公共接口,API,网络软件,SYBASE,DB2,ORACLE,SQL Server,Foxpro,10.2.2 ODBC,的体系结构(一,ODBC,数据库应用程
4、序,SQL Server,驱动程序,Oracle,驱动程序,DB2,驱动程序,Sybase,驱动程序,Foxpro,驱动程序,驱动程序管理器,SQL Server,数据源,Oracle,数据源,Foxpro,数据源,Sybase,数据源,DB2,数据源,DB,DB,DB,DB,DB,10.2.2 ODBC,的体系结构(二,应用程序的主要功能是:调用,ODBC,函数,递交,SQL,语句给,DBMS,检索出结果,并进行处理,驱动程序管理器是一个动态连接库,DLL,,用于,连接各种,DBS,的,DBMS,驱动程序(如,Oracle,Foxpro,Sybase,等驱动程序),管理应用程序和,DBMS,
5、驱动程序之间的交互作用(通信,应用程序通过调用驱动程序所支持的函数来操纵数,据库。驱动程序也是一个动态连接库,DLL,10.2.2 ODBC,的体系结构(三,网络环境下基于单层驱动程序的,ODBC,结构,工作站,ODBC,数据库应用程序,驱动程序管理器,单层驱动程序(包含数据库引擎,数据库文件,DBF,网络,文件服务器,10.2.2 ODBC,的体系结构(四,基于多层驱动程序的,ODBC,结构,ODBC,数据库应用程序,驱动程序管理器,多层驱动程序,客户端网络支撑软件,客户端,网络,SQL,请求,数据库服务器,操作结果,数据库软件,DBF,数据库引擎,服务器网络支撑软件,10.2.2 ODBC
6、,的体系结构(五,基于网关机制的多层驱动程序的,ODBC,结构,ODBC,数据库应用程序,客户端网络支撑软件,客户浏览器,网络,数据库引擎,WWW,服务器,数据库,驱动程序管理器,数据库网关,服务器网络支撑软件,驱动程序,数据库服务器,10.2.2 ODBC,的体系结构(六,用户数据源:用户创建的数据源,称为“用户数据,源”。此时只有创建者才能使用,并且只能在所定,义的机器上运行。任何用户都不能使用其他用户创,建的用户数据源,系统数据源:所有用户和在,Windows NT,下以服务,方式运行的应用程序均可使用系统数据源,文件数据源:文件数据源是,ODBC 3.0,以上版本增,加的一种数据源,可
7、用于企业用户,ODBC,驱动程,序也安装在用户的计算机上,10.2.3 ODBC,的特性,ODBC,是一个调用层的接口,ODBC,定义了标准的,SQL,语法,ODBC,提供一个驱动程序管理器来管理并同,时访问多个,DBMS,系统,10.3.1 ODBC,应用程序的基本流程,分配环境句柄,分配连接句柄,与服务器连接,分配语句句柄,初始化,释放环境句柄,SQL,处理,释放语句句柄,语句处理和检索部分,与服务器断开,释放连接句柄,终止,相应的函数名,SQLAllocEnv,SQLAllocConnect,SQLConnect,SQLAllocStmt,SQLExecDirect,直接执行函数,SQL
8、Prepare,语句预备函数,SQLExecute,语句执行函数,SQLDisconnect,SQLFreeEnv,SQLFreeConnect,SQLFreeStmt,10.3.2 ODBC,句柄(一,应用程序,环境句柄,只有一个,连接句柄,连接句柄,连接句柄,语句句柄,语句句柄,语句句柄,10.3.2 ODBC,句柄(二,henv,hdbc,hstmt,环境句柄,定义,DB,应用环境,连接句柄,定义一个,DB,连接,语句句柄,定义一个,SQL,语句,10.3.3,数据源的连接与断开,1,连接数据源的函数,连接数据源的函数有三个,但最有效、最通用的是下面一种格式,SQLConnect,hdb
9、c,szDSN,cbDSN,szUID,cbUID,szAuthStr,cbAuthStr,。其中,参数,hdbc,是一个已经分配的连接分配,参数,szDSN,和,cbDSN,分别表示系统所要连接的数据源名称及其长度,参数,szUID,和,cbUID,分别表示用户标识符及其长度,参数,szAuthStr,和,cbAuthStr,分别表示权限字符串及其长度,2,断开数据源函数,其格式如下,SQLDisconnect,hdbc,其中,参数,hdbc,是要断开的连接,句柄,10.3.4 SQL,语句的执行(一,main,HENV,henv,说明,henv,是一个环境型变量,HDBC,hdbc,说明,
10、hdbc,是一个连接型变量,HSTMT,hstmt,说明,hstmt,是一个语句句柄变量,RETCODE,retcode,说明,retcode,是一个返回变量,SQLAllocEnv,henv,分配一个环境句柄,SQLAllocConnect,henv,hdbc,分配一个连接句柄,SQLConnect,hdbc,学生,SQL_NTS,NULL,0,NULL,0,连接数据源,SQLAllocStmt,hdbc,hstmt,分配一个语句句柄,retcode=SQLExecDirect,hstmt,卜?剆?屓,SQL_NTS,执行语句,结果集处理,SQLDisconnect,hdbc,断开数据源,S
11、QLFreeStmt,hstmt,SQL_DROP,释放一个语句句柄,SQLFreeConnect,hdbc,释放一个连接句柄,SQLFreeEnv,henv,当应用完成后,释放环境句柄,10.3.4 SQL,语句的执行(二,有准备地执行,SQL,语句的函数,1) SQL,语句预备函数,其格式如下,SQLPrepare,hstmt,szSqlStr,cbSqlStr,。其中,参数,hstmt,是一个有效的语句句,柄,参数,szSqlStr,和,cbSqlStr,分别表示将要执行的,SQL,语句的字符串及其长度,2) SQL,语句执行函数,其格式如下,SQLExecute,hstmt,。其中参数
12、,hstmt,是一个有效的语句句柄,10.3.5,查询结果的获取,while,RETCODE_IS_SUCCESSFUL,retcode,retcode=SQLFetch,hstmt,if,RETCODE_IS_SUCCESSFUL,retcode,do,rcGetData = SQLGetData,hstmt,1,SQL_C_CHAR,szBuffer,sizeof,szBuffer,cbValue,DISPLAY_MEMO,szBuffer,cbValue,显示,while,rcGetData!=SQL_NO_DATA_FOUND,10.4 ODBC,的符合性级别,ODBC,使得我们能够访
13、问任何数据源而不必修改应用程,序。但在实际使用中存在着一些问题。由于,DBMS,厂商提供,的,SQL,不同(不是指形式上,而是功能上有多有少),有的,SQL,功能在某厂商的,DBMS,上没有实现,则,ODBC,就不可能,为应用程序完成这一功能;有的,SQL,功能是,SQL,标准新增加,的,而,DBMS,厂商没有及时跟上,则,ODBC,同样也无法完成,新功能。对于具体,DBMS,不支持的,SQL,功能,DBMS,要通报,给应用程序。而从,ODBC,本身来讲,它最好支持完全的,SQL,这样才能做到应用程序不用修改就可以访问不同的数据源,10.4.1 API,符合性的三个级别,核心级,API,1,级
14、,API,2,级,API,10.4.2 SQL,符合性的三个级别,最小级,SQL,核心级,SQL,扩展级,SQL,10.4.3 ODBC API,与,SQL CLI,之间的,协调,Microsoft,公司于,1991,年,11,月提出了一个关于,ODBC,的,体系结构,并在,1992,年发布了,ODBC 1.0,规范,随后,以软件开发工具包,SDK,形式出版并发行了这种面,向,SQL,的,API,数据库公司国际财团,SQL Access Group,SAG,和标,准化组织,X,Open,在,1992,年联合出版了一个规范,该,规范定义了调用级界面,Call Level Interface,CL
15、I,标准,1993,年,Microsoft,公司推出了,ODBC 2.0,规范,并于,1994,年出版了,ODBC 2.0 SDK,Microsoft,在,1998,年出版的,ODBC 3.0,规范中,作了一,些修改,目的是更进一步接近,SQL,标准,SQL3,即,SQL99,的第三部分介绍了,SQL,CLI,10.4.4,典型的数据库应用系统开发工,具,PowerBilder,Delphi,Visual Basic,Developer,2000,10.5.1 Java,简介,Java,语言,Java,的工作方式,Java,的特性,Java,的应用程序和小程序,10.5.2 JDBC,的提出,
16、JDBC,是执行,SQL,语句的,Java API,JDBC,是,Java,DataBase Connectivity,JDBC,数据库连接,的缩写,JDBC,原来是,Java Soft,公司设计的,Java,语言的数据库访问,API,最初的,Java,语言本身并没有访问,DB,的能力,JDBC,是,第一个支持,Java,语言的标准的数据库,API,1996,年夏天,Sun,公司推出了,JDBC,工具。现在,JDBC,驱动程序已经被大多,数主流数据库所用,JDBC,由一组用,Java,语言编写的类与接口组成,JDBC,扩充了,Java,的应用范围,用,Java,与,JDBC API,可以发,布
17、一种包含远程数据库信息的,Applet,小应用程序)的,WWW,页面,10.5.3 JDBC,的基本功能,建立与数据库的连接,发送,SQL,语句,处理结果,10.5.4 JDBC,与,CGI,的比较,Java,应用程序,CGI,脚本,Web,服务器,数据库,Java,应用程序,JDBC,服务器,数据库,10.6.1 JDBC,数据库设计方法,DBMS,Java,应用程序,application,JDBC,客户机,DBMS,DB,服务器,专用协议,DBMS,Java Web,服务,JDBC,应用服务器,DBMS,DB,服务器,专用协议,HTTP,Java,小应用程序,applet,客户机,RMI
18、,调用,10.6.2,保持一致性的措施,允许将任何查询字符串传递给基础,DBMS,驱动器,这意味着应用可以自动地使用尽可能多的,SQL,功能,但这会使某些,DBMS,系统接收到某种错误的查询,采用,ODBC,风格的方法,提供表示几种常见的,SQL,差别的标准,JDBC,语法,对于复杂应用,借助于,DatabaseMetaData,接口,提供关于,DBMS,的描述性信息,使应用能适应每个,DBMS,的需求与能力,10.6.3 JDBC,驱动程序,本地库,Java,实现,网络协议,Java,驱动程序,本地协议,Java,驱动程序,JDBC-ODBC,桥驱动程序,10.7.1 JDBC API,的目
19、标,为,Java,定义一个“调用层”,call-level,的,SQL,接口,遵循,SQL2,标准,JDBC,应建立在现存的数据库接口上,必须保证这个接口与,Java,系统的其他部分,保持一致,使基本的,API,尽量简单,尽量保持强大的、静态的类型,10.7.2 JDBC API,接口概貌,JDBC,接口分为两个层次,一个是面向程序开发人员的,JDBC API,另外一个是底层的,JDBC Driver API,一般来说,应用程序层是数据库应用程序开发者使用的,驱动程序层是,驱动厂家实现的。对于应用程序开发者来说只要求,JDBC,API,所提供的接口能保证与,JDBC,相符合。而对于驱动程序层,则要负责开开发数据库接口和支持,JDBC,应用程序层调用的,编码。每一个驱动程序层都必须实现,4,个组要的接口,应用,程序层和驱动程序层用一个类桥接。这,4,个接口分别是,Driver,Connection,Statement,和,ResultSet,Driver
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 未来商业模式创新中的战略风险探讨试题及答案
- 网络安全防护的策略与试题及答案
- 规范网络管理流程的试题及答案
- 法学概论考试技巧提升试题及答案
- 产品三维建模与结构设计(UG)课件:管钳模型的装配
- 云网络管理的关键试题及答案
- 软件需求规格试题及答案分析
- 风险管理在并购过程中的作用试题及答案
- 2025年计算机技术员考试成功之道试题及答案
- 2025年软件测试应试试题及答案
- GB/T 2982-2024工业车辆充气轮胎规格、尺寸、气压与负荷
- 史记人物课件教学课件
- 走进泰国-课件
- 一站到底课件
- 西安中建一局装修合同模板
- 社会团体财务报表
- DB34∕T 3468-2019 民用建筑楼面保温隔声工程技术规程
- iso220002024食品安全管理体系标准
- 2024年秋新冀教版三年级上册英语教学课件 U3L3
- 拔牙术后并发症及处理对策
- 2024年山东省济南市历下区中考一模物理试题(解析版)
评论
0/150
提交评论