




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章 中间件技 术 本章重要概念 (1)中间件的定义和作用 (2)ODBC分层的体系结构:应用程序,驱动 程序管理器,DB驱动程序,ODBC数据源。 (3)ODBC接口:应用程序基本流程, ODBC句柄,ODBC连接,SQL语句的执行。 ODBC两套符合性级别。典型的DB应用系统 开发工具。 (4)JDBC的基本功能,JDBC的结构,JDBC 接口。 前 言 v对于那些相对独立的软件供应商而言,经常要为每一个 DBMS编写一个版本的应用程序,或者为每个要访问的 DBMS编写针对DBMS的代码。这就意味着,大量的资源都 耗在了编写和维护DB的访问上,更不用说应用程序了。此 时应用程序的评价标
2、准不再是质量,而是它能否在给定的 DBMS中访问数据库。 v这就需要开放的数据库连接,就是人们需要用一种新的方法 来访问不同的数据库。为此,在C/S系统中必须广泛使用中 间件技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。 ODBC技术和JDBC技术就是这种优秀的中间件技术。 10.1.1 中间件的定义 v定义10.1 中间件(middleware)是分布式环 境中保证操作系统、通信协议、数据库等之 间进行对话、互操作的软件系统。 10.2.2 中间件的作用 v中间件的作用是保证网络中各部件(软件和硬件)之间透 明地连接,即隐藏网络部件的异构性,尤其保证不同网络、 不同DBMS和某些访问语言的
3、透明性,即下面三个透明性。 网络透明性:能支持所有类型的网络 。 服务器透明性:不管服务器上的DBMS是何种型号 (ORACLE、SYBASE、DB2等),一个好的中间件都能 通过标准的SQL语言与不同DBMS上的SQL语言连接起来。 语言透明性:客户机可用任何开发语言进行发送请求和接 受回答,被调用的功能应该像语言那样也是独立的。 10.2.1 ODBC概念 图10.1 采用API的应用编程 10.2.2 ODBC的体系结构(一) 图10.2 ODBC的分层体系结构 10.2.2 ODBC的体系结构(二) v应用程序的主要功能是:调用ODBC函数,递交 SQL语句给DBMS,检索出结果,并进
4、行处理。 v驱动程序管理器是一个动态连接库(DLL),用于 连接各种DBS的DBMS驱动程序(如Oracle、 Foxpro、Sybase等驱动程序),管理应用程序和 DBMS驱动程序之间的交互作用(通信)。 v应用程序通过调用驱动程序所支持的函数来操纵数 据库。驱动程序也是一个动态连接库(DLL)。 10.2.2 ODBC的体系结构(三) 图10.3 网络环境下基于单层驱动程序的ODBC结构 10.2.2 ODBC的体系结构(四) 图10.4 基于多层驱动程序的ODBC结构(两层结构) 10.2.2 ODBC的体系结构(五) v基于网关机制的多层驱动程序的ODBC结构 图10.4 基于网关机
5、制的多层驱动程序ODBC结构(三层结构) 10.2.2 ODBC的体系结构(六) 用户数据源:用户创建的数据源,称为“用户数据 源”。此时只有创建者才能使用,并且只能在所定 义的机器上运行。任何用户都不能使用其他用户创 建的用户数据源。 系统数据源:所有用户和在Windows NT下以服务 方式运行的应用程序均可使用系统数据源。 文件数据源:文件数据源是ODBC 3.0以上版本增 加的一种数据源,可用于企业用户,ODBC驱动程 序也安装在用户的计算机上。 10.2.3 ODBC的特性 ODBC是一个调用层的接口 ODBC定义了标准的SQL语法 ODBC提供一个驱动程序管理器来管理并同 时访问多
6、个DBMS系统 10.3.1 ODBC应用程序的基本流程 图10.6 ODBC应用程序的基本流程 10.3.2 ODBC句柄(一) 图10.7 三种句柄之间的关系 10.3.2 ODBC句柄(二) henv hdbc hstmt 环境句柄 (定义DB应用环境) 连接句柄 (定义一个DB连接) 语句句柄 (定义一个SQL语句) 图10.8 各种句柄之间的关系 10.3.3 数据源的连接与断开 (1) 连接数据源的函数 连接数据源的函数有三个,但最有效、最通用的是下面一种格式: SQLConnect(hdbc,szDSN,cbDSN,szUID,cbUID,szAuthStr, cbAuthStr
7、)。其中,参数hdbc是一个已经分配的连接分配; 参数szDSN和cbDSN分别表示系统所要连接的数据源名称及其长度; 参数szUID和cbUID分别表示用户标识符及其长度; 参数szAuthStr和cbAuthStr分别表示权限字符串及其长度。 (2) 断开数据源函数 其格式如下:SQLDisconnect(hdbc)其中,参数hdbc是要断开的连接 句柄。 10.3.4 SQL语句的执行(一) main() HENV henv;*说明henv是一个环境型变量* HDBC hdbc;*说明hdbc是一个连接型变量* HSTMThstmt;*说明hstmt是一个语句句柄变量* RETCODE
8、retcode;*说明retcode是一个返回变量* SQLAllocEnv(&henv);*分配一个环境句柄* SQLAllocConnect(henv,&hdbc);*分配一个连接句柄* SQLConnect(hdbc,学生,SQL_NTS,NULL,0,NULL,0);*连接数据源* SQLAllocStmt(hdbc,&hstmt);*分配一个语句句柄* retcode=SQLExecDirect(hstmt,SELECT * FROM S,SQL_NTS);*执行语句 * *结果集处理* SQLDisconnect(hdbc);*断开数据源* SQLFreeStmt(hstmt,SQ
9、L_DROP)*释放一个语句句柄* SQLFreeConnect(hdbc);*释放一个连接句柄* SQLFreeEnv(henv);*当应用完成后,释放环境句柄* 10.3.4 SQL语句的执行(二) v有准备地执行SQL语句的函数 v(1) SQL语句预备函数 其格式如下:SQLPrepare(hstmt,szSqlStr, cbSqlStr)。其中,参数hstmt是一个有效的语句句 柄,参数szSqlStr和cbSqlStr分别表示将要执行的 SQL语句的字符串及其长度。 v (2) SQL语句执行函数 其格式如下:SQLExecute(hstmt)。其中参数 hstmt是一个有效的语句
10、句柄。 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使得我们能够访问
11、任何数据源而不必修改应用程 序。但在实际使用中存在着一些问题。由于DBMS厂商提供 的SQL不同(不是指形式上,而是功能上有多有少),有的 SQL功能在某厂商的DBMS上没有实现,则ODBC就不可能 为应用程序完成这一功能;有的SQL功能是SQL标准新增加 的,而DBMS厂商没有及时跟上,则ODBC同样也无法完成 新功能。对于具体DBMS不支持的SQL功能,DBMS要通报 给应用程序。而从ODBC本身来讲,它最好支持完全的SQL, 这样才能做到应用程序不用修改就可以访问不同的数据源。 10.4.1 API符合性的三个级别 核心级API 1级API 2级API 10.4.2 SQL符合性的三个级
12、别 v最小级SQL v核心级SQL v扩展级SQL 10.4.3 ODBC API与SQL CLI之间的 协调 vMicrosoft公司于1991年11月提出了一个关于ODBC的 体系结构,并在1992年发布了ODBC 1.0规范,随后 以软件开发工具包(SDK)形式出版并发行了这种面 向SQL的API。 v数据库公司国际财团SQL Access Group(SAG)和标 准化组织XOpen在1992年联合出版了一个规范,该 规范定义了调用级界面(Call Level Interface),CLI) 标准。 v1993年,Microsoft公司推出了ODBC 2.0规范,并于 1994年出版了
13、ODBC 2.0 SDK。 vMicrosoft在1998年出版的ODBC 3.0规范中,作了一 些修改,目的是更进一步接近SQL标准。 vSQL3(即SQL99)的第三部分介绍了SQLCLI。 10.4.4 典型的数据库应用系统开发工 具 vPowerBilder vDelphi vVisual Basic vDeveloper2000 10.5.1 Java简介 vJava语言 vJava的工作方式 vJava的特性 vJava的应用程序和小程序 10.5.2 JDBC的提出 vJDBC是执行SQL语句的Java API。JDBC是“Java DataBase Connectivity”(
14、JDBC数据库连接 )的缩写。 JDBC原来是Java Soft公司设计的Java语言的数据库访问 API。最初的Java语言本身并没有访问DB的能力,JDBC是 第一个支持Java语言的标准的数据库API。1996年夏天, Sun公司推出了JDBC工具。现在JDBC驱动程序已经被大多 数主流数据库所用。 vJDBC由一组用Java语言编写的类与接口组成。 vJDBC扩充了Java的应用范围,用Java与JDBC API可以发布 一种包含远程数据库信息的Applet(小应用程序)的WWW 页面。 10.5.3 JDBC的基本功能 v建立与数据库的连接 v发送SQL语句 v处理结果 10.5.4
15、 JDBC与CGI的比较 图10.11 通过JDBC服务器访问数据库 图10.10 CGI脚本的调用及实现过程 10.6.1 JDBC数据库设计方法 图10.12 JDBC两层应用模型 图10.12 JDBC三层应用模型 10.6.2 保持一致性的措施 允许将任何查询字符串传递给基础DBMS驱动器, 这意味着应用可以自动地使用尽可能多的SQL功能, 但这会使某些DBMS系统接收到某种错误的查询。 采用ODBC风格的方法,提供表示几种常见的SQL 差别的标准JDBC语法。 对于复杂应用,借助于DatabaseMetaData接口, 提供关于DBMS的描述性信息,使应用能适应每个 DBMS的需求与
16、能力。 10.6.3 JDBC驱动程序 v本地库Java实现 v网络协议Java驱动程序 v本地协议Java驱动程序 vJDBC-ODBC桥驱动程序 10.7.1 JDBC API的目标 为Java定义一个“调用层”(call-level)的 SQL接口 遵循SQL2标准 JDBC应建立在现存的数据库接口上 必须保证这个接口与Java系统的其他部分 保持一致 使基本的API尽量简单 尽量保持强大的、静态的类型 10.7.2 JDBC API接口概貌 JDBC接口分为两个层次,一个是面向程序开发人员的 JDBC API,另外一个是底层的JDBC Driver API。一般来说, 应用程序层是数据
17、库应用程序开发者使用的,驱动程序层是 驱动厂家实现的。对于应用程序开发者来说只要求JDBC API所提供的接口能保证与JDBC相符合。而对于驱动程序层 则要负责开开发数据库接口和支持JDBC应用程序层调用的 编码。每一个驱动程序层都必须实现4个组要的接口,应用 程序层和驱动程序层用一个类桥接。这4个接口分别是Driver、 Connection、Statement和ResultSet。Driver接口建立与数 据库的连接,大多数应用程序中,Driver接口功能是通过驱 动程序管理器(DriverManager)类实现的,提供给使用者 的另一层的抽象。 小 结(一) vODBC和JDBC是当今C/S数据库环境中使用广泛也 是著名的中间件。 v目前,使用ODBC API几乎可以将所有平台上的关 系型数据库连接起来。ODBC的体系结构由四个部 分构成。其中驱动程序管理器和DBMS的驱动程序 都是动态链接库(DLL),由一系列函数构成。 ODBC接口由一系列调用函数组成,应用程序分成 初始化、SQL处理和终止三个部分,每一部分使用 ODBC函数都有严格的规定和顺序。ODBC API和 SQL CLI这两个标准正在朝统一的方向迈进。 小 结(二) vJDBC是基于ODBC的SQL Java接口,它既保持了 Java语言自身的特点,也保留了ODBC的基本设计 功能,熟悉ODBC的程序员
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023-2024学年江苏省常州市武进区高二下学期期中质量调研数学试题(解析版)
- 高等数学-第5章-第一节-定积分的概念
- 江苏弛信管业科技有限公司管材扩建项目环评资料环境影响
- 奶茶店开业活动营销策划方案
- 检讨书上班犯错
- 顶撞学长检讨书
- 医院药食同源合作协议
- 环境工程课件视频下载
- 骨筋膜室综合征预防处理及护理课件
- 类风湿性关节炎的护理常规及健康教育讲课件
- 2025年特种设备安全考试题库特种设备安全管理人员法规应用试卷
- 普法试题及答案初中
- 中控岗位考试题及答案
- 商铺退押金协议书
- 碘对比剂护理应用与安全管理
- 2025-2030年中国航空密封件行业市场现状供需分析及投资评估规划分析研究报告
- 知识产权租赁协议书
- GB 45673-2025危险化学品企业安全生产标准化通用规范
- 医院培训课件:《新生儿早期基本保健专家共识(2020)解读》
- 山东开放大学招聘真题2024
- 《治疗癫痫药物》课件
评论
0/150
提交评论