




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统教程 第10章 中间件技术第10章 中间件技术 数据库系统教程 第10章 中间件技术2 本章重要概念 (1)中间件的定义和作用(2)ODBC分层的体系结构:应用程序,驱动程序管理器,DB驱动程序,ODBC数据源。 (3)ODBC接口:应用程序基本流程,ODBC句柄,ODBC连接,SQL语句的执行。ODBC两套符合性级别。典型的DB应用系统开发工具。 (4)JDBC的基本功能,JDBC的结构,JDBC接口。 数据库系统教程 第10章 中间件技术3前 言v 对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这
2、就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。v 这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在C/S系统中必须广泛使用中间件技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。ODBC技术和JDBC技术就是这种优秀的中间件技术。 数据库系统教程 第10章 中间件技术410.1.1 中间件的定义v定义10.1 中间件(middleware)是分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。数据库系统教程 第10章 中间件技术510.2.2
3、 中间件的作用v 中间件的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。v网络透明性:能支持所有类型的网络 。v服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的中间件都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。 语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。 数据库系统教程 第10章 中间件技术610.2.1 ODBC概念图10.1 采用API的应用编程 数据库系统教程 第10章
4、 中间件技术710.2.2 ODBC的体系结构(一)图10.2 ODBC的分层体系结构数据库系统教程 第10章 中间件技术810.2.2 ODBC的体系结构(二)v应用程序的主要功能是:调用ODBC函数,递交SQL语句给DBMS,检索出结果,并进行处理。 v驱动程序管理器是一个动态连接库(DLL),用于连接各种DBS的DBMS驱动程序(如Oracle、Foxpro、Sybase等驱动程序),管理应用程序和DBMS驱动程序之间的交互作用(通信)。v应用程序通过调用驱动程序所支持的函数来操纵数据库。驱动程序也是一个动态连接库(DLL)。 数据库系统教程 第10章 中间件技术910.2.2 ODBC
5、的体系结构(三)图10.3 网络环境下基于单层驱动程序的ODBC结构 数据库系统教程 第10章 中间件技术1010.2.2 ODBC的体系结构(四)图10.4 基于多层驱动程序的ODBC结构(两层结构) 数据库系统教程 第10章 中间件技术1110.2.2 ODBC的体系结构(五)v基于网关机制的多层驱动程序的ODBC结构 图10.4 基于网关机制的多层驱动程序ODBC结构(三层结构) 数据库系统教程 第10章 中间件技术1210.2.2 ODBC的体系结构(六)v用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户
6、创建的用户数据源。v系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。v文件数据源:文件数据源是ODBC 3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。数据库系统教程 第10章 中间件技术1310.2.3 ODBC的特性vODBC是一个调用层的接口 vODBC定义了标准的SQL语法 vODBC提供一个驱动程序管理器来管理并同时访问多个DBMS系统 数据库系统教程 第10章 中间件技术1410.3.1 ODBC应用程序的基本流程图10.6 ODBC应用程序的基本流程 数据库系统教程 第10章 中间件技术1510.3
7、.2 ODBC句柄(一)图10.7 三种句柄之间的关系 数据库系统教程 第10章 中间件技术1610.3.2 ODBC句柄(二)henvhdbchstmt环境句柄(定义DB应用环境)连接句柄(定义一个DB连接)语句句柄(定义一个SQL语句)图10.8 各种句柄之间的关系 数据库系统教程 第10章 中间件技术1710.3.3 数据源的连接与断开(1) 连接数据源的函数连接数据源的函数有三个,但最有效、最通用的是下面一种格式:SQLConnect(hdbc,szDSN,cbDSN,szUID,cbUID,szAuthStr,cbAuthStr)。其中,参数hdbc是一个已经分配的连接分配;参数sz
8、DSN和cbDSN分别表示系统所要连接的数据源名称及其长度;参数szUID和cbUID分别表示用户标识符及其长度 ;参数szAuthStr和cbAuthStr分别表示权限字符串及其长度(2) 断开数据源函数其格式如下:SQLDisconnect(hdbc)其中,参数hdbc是要断开的连接句柄。 数据库系统教程 第10章 中间件技术1810.3.4 SQL语句的执行(一)main() HENV henv;*说明henv是一个环境型变量*HDBC hdbc;*说明hdbc是一个连接型变量*HSTMThstmt;*说明hstmt是一个语句句柄变量*RETCODE retcode;*说明retcode
9、是一个返回变量*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,SQL_DROP)*释放一个语句
10、句柄*SQLFreeConnect(hdbc);*释放一个连接句柄*SQLFreeEnv(henv);*当应用完成后,释放环境句柄* 数据库系统教程 第10章 中间件技术1910.3.4 SQL语句的执行(二)v有准备地执行SQL语句的函数v(1) SQL语句预备函数其格式如下:SQLPrepare(hstmt,szSqlStr,cbSqlStr)。其中,参数hstmt是一个有效的语句句柄,参数szSqlStr和cbSqlStr分别表示将要执行的SQL语句的字符串及其长度。v (2) SQL语句执行函数其格式如下:SQLExecute(hstmt)。其中参数hstmt是一个有效的语句句柄。数据
11、库系统教程 第10章 中间件技术2010.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章 中间
12、件技术2110.4 ODBC的符合性级别ODBC使得我们能够访问任何数据源而不必修改应用程序。但在实际使用中存在着一些问题。由于DBMS厂商提供的SQL不同(不是指形式上,而是功能上有多有少),有的SQL功能在某厂商的DBMS上没有实现,则ODBC就不可能为应用程序完成这一功能;有的SQL功能是SQL标准新增加的,而DBMS厂商没有及时跟上,则ODBC同样也无法完成新功能。对于具体DBMS不支持的SQL功能,DBMS要通报给应用程序。而从ODBC本身来讲,它最好支持完全的SQL,这样才能做到应用程序不用修改就可以访问不同的数据源。数据库系统教程 第10章 中间件技术2210.4.1 API符合
13、性的三个级别v核心级API v1级API v2级API 数据库系统教程 第10章 中间件技术2310.4.2 SQL符合性的三个级别v最小级SQL v核心级SQL v扩展级SQL 数据库系统教程 第10章 中间件技术2410.4.3 ODBC API与SQL CLI之间的协调v Microsoft公司于1991年11月提出了一个关于ODBC的体系结构,并在1992年发布了ODBC 1.0规范,随后以软件开发工具包(SDK)形式出版并发行了这种面向SQL的API。 v 数据库公司国际财团SQL Access Group(SAG)和标准化组织XOpen在1992年联合出版了一个规范,该规范定义了调
14、用级界面(Call Level Interface),CLI)标准。 v 1993年,Microsoft公司推出了ODBC 2.0规范,并于1994年出版了ODBC 2.0 SDK。 v Microsoft在1998年出版的ODBC 3.0规范中,作了一些修改,目的是更进一步接近SQL标准。v SQL3(即SQL99)的第三部分介绍了SQLCLI。 数据库系统教程 第10章 中间件技术2510.4.4 典型的数据库应用系统开发工具vPowerBilder vDelphi vVisual Basic vDeveloper2000 数据库系统教程 第10章 中间件技术2610.5.1 Java简介
15、vJava语言 vJava的工作方式 vJava的特性 vJava的应用程序和小程序 数据库系统教程 第10章 中间件技术2710.5.2 JDBC的提出vJDBC是执行SQL语句的Java API。JDBC是“Java DataBase Connectivity”(JDBC数据库连接 )的缩写。JDBC原来是Java Soft公司设计的Java语言的数据库访问API。最初的Java语言本身并没有访问DB的能力,JDBC是第一个支持Java语言的标准的数据库API。1996年夏天,Sun公司推出了JDBC工具。现在JDBC驱动程序已经被大多数主流数据库所用。vJDBC由一组用Java语言编写的
16、类与接口组成。vJDBC扩充了Java的应用范围,用Java与JDBC API可以发布一种包含远程数据库信息的Applet(小应用程序)的WWW页面。数据库系统教程 第10章 中间件技术2810.5.3 JDBC的基本功能v建立与数据库的连接v发送SQL语句v处理结果数据库系统教程 第10章 中间件技术2910.5.4 JDBC与CGI的比较图10.11 通过JDBC服务器访问数据库 图10.10 CGI脚本的调用及实现过程 数据库系统教程 第10章 中间件技术3010.6.1 JDBC数据库设计方法图10.12 JDBC两层应用模型图10.12 JDBC三层应用模型数据库系统教程 第10章
17、中间件技术3110.6.2 保持一致性的措施v允许将任何查询字符串传递给基础DBMS驱动器,这意味着应用可以自动地使用尽可能多的SQL功能,但这会使某些DBMS系统接收到某种错误的查询。v采用ODBC风格的方法,提供表示几种常见的SQL差别的标准JDBC语法。v对于复杂应用,借助于DatabaseMetaData接口,提供关于DBMS的描述性信息,使应用能适应每个DBMS的需求与能力。数据库系统教程 第10章 中间件技术3210.6.3 JDBC驱动程序v本地库Java实现 v网络协议Java驱动程序 v本地协议Java驱动程序 vJDBC-ODBC桥驱动程序 数据库系统教程 第10章 中间件
18、技术3310.7.1 JDBC API的目标v为Java定义一个“调用层”(call-level)的SQL接口v遵循SQL2标准vJDBC应建立在现存的数据库接口上v必须保证这个接口与Java系统的其他部分保持一致v使基本的API尽量简单v尽量保持强大的、静态的类型数据库系统教程 第10章 中间件技术3410.7.2 JDBC API接口概貌JDBC接口分为两个层次,一个是面向程序开发人员的JDBC API,另外一个是底层的JDBC Driver API。一般来说,应用程序层是数据库应用程序开发者使用的,驱动程序层是驱动厂家实现的。对于应用程序开发者来说只要求JDBC API所提供的接口能保证与JDBC相符合。而对于驱动程序层则要负责开开发数据库接口和支持JDBC应用程序层调用的编码。每一个驱动程序层都必须实现4个组要的接口,应用程序层和驱动程序层用一个类桥接。这4个接口分别是Driver、Connection、Statement和ResultSet。Driver接口建立与数据库的连接,大多数应用程序中,Driver接口功能是通过驱动程序管理器(DriverManager)类实现的,提供给使用者的另一层的抽象。 数据库系统教程 第1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教育政策的绩效评估与影响研究试题及答案
- 机电工程考试案例汇编与试题及答案
- 软件设计师考试成功之路试题与答案
- 数据通讯基础试题及答案
- 2024年中成药制药生产线资金筹措计划书代可行性研究报告
- 机电工程各章节核心要点的试题及答案
- 嵌入式开发中的常见问题试题及答案
- 西方政治制度改革试题及答案
- 机电工程服务与管理试题及答案
- 西方政治制度在民族理解与和谐社会建设中的作用试题及答案
- 四川省攀枝花市重点名校2025届中考联考生物试题含解析
- 百团进万企安全专题宣讲
- 狐疝中医相关知识
- 《风光摄影技巧》课件
- 2025年北京控股集团招聘笔试参考题库含答案
- 美爱德华·W·萨义德-东方学
- 新《科学技术普及法》专题讲座课件
- 药品管理与使用规范管理制度
- 药剂学第9版课件:第一章-绪论
- 2024年中草药外囊泡技术与产业发展白皮书
- 海洋机器人与人工智能知到智慧树章节测试课后答案2024年秋哈尔滨工程大学
评论
0/150
提交评论