chapter10之中间件技术分析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

数据库系统教程第10章中间件技术第10章中间件技术数据库系统教程第10章中间件技术2本章重要概念(1)中间件的定义和作用(2)ODBC分层的体系结构:应用程序,驱动程序管理器,DB驱动程序,ODBC数据源。(3)ODBC接口:应用程序基本流程,ODBC句柄,ODBC连接,SQL语句的执行。ODBC两套符合性级别。典型的DB应用系统开发工具。(4)JDBC的基本功能,JDBC的结构,JDBC接口。数据库系统教程第10章中间件技术3前言对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在C/S系统中必须广泛使用中间件技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。ODBC技术和JDBC技术就是这种优秀的中间件技术。数据库系统教程第10章中间件技术410.1.1中间件的定义定义10.1中间件(middleware)是分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。数据库系统教程第10章中间件技术510.2.2中间件的作用中间件的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。①网络透明性:能支持所有类型的网络。②服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的中间件都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。③语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。数据库系统教程第10章中间件技术610.2.1ODBC概念图10.1采用API的应用编程数据库系统教程第10章中间件技术710.2.2ODBC的体系结构(一)ODBC数据库应用程序SQLServer驱动程序Oracle驱动程序DB2驱动程序Sybase驱动程序Foxpro驱动程序驱动程序管理器SQLServer数据源Oracle数据源Foxpro数据源Sybase数据源DB2数据源DBDBDBDBDB图10.2ODBC的分层体系结构数据库系统教程第10章中间件技术810.2.2ODBC的体系结构(二)应用程序的主要功能是:调用ODBC函数,递交SQL语句给DBMS,检索出结果,并进行处理。驱动程序管理器是一个动态连接库(DLL),用于连接各种DBS的DBMS驱动程序(如Oracle、Foxpro、Sybase等驱动程序),管理应用程序和DBMS驱动程序之间的交互作用(通信)。应用程序通过调用驱动程序所支持的函数来操纵数据库。驱动程序也是一个动态连接库(DLL)。数据库系统教程第10章中间件技术910.2.2ODBC的体系结构(三)图10.3网络环境下基于单层驱动程序的ODBC结构数据库系统教程第10章中间件技术1010.2.2ODBC的体系结构(四)图10.4基于多层驱动程序的ODBC结构(两层结构)数据库系统教程第10章中间件技术1110.2.2ODBC的体系结构(五)基于网关机制的多层驱动程序的ODBC结构ODBC数据库应用程序客户端网络支撑软件客户浏览器(网络)数据库引擎结构(三层结构)数据库系统教程第10章中间件技术1210.2.2ODBC的体系结构(六)①用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。②系统数据源:所有用户和在WindowsNT下以服务方式运行的应用程序均可使用系统数据源。③文件数据源:文件数据源是ODBC3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。数据库系统教程第10章中间件技术1310.2.3ODBC的特性①ODBC是一个调用层的接口②ODBC定义了标准的SQL语法③ODBC提供一个驱动程序管理器来管理并同时访问多个DBMS系统数据库系统教程第10章中间件技术1410.3.1ODBC应用程序的基本流程分配环境句柄分配连接句柄与服务器连接分配语句句柄初始化释放环境句柄SQL处理释放语句句柄语句处理和检索部分与服务器断开释放连接句柄终止相应的函数名SQLAllocEnvSQLAllocConnectSQLConnectSQLAllocStmtSQLExecDirect(直接执行函数)SQLPrepare(语句预备函数)SQLExecute(语句执行函数)SQLDisconnectSQLFreeEnvSQLFreeConnectSQLFreeStmt图10.6ODBC应用程序的基本流程数据库系统教程第10章中间件技术1510.3.2ODBC句柄(一)应用程序环境句柄(只有一个)连接句柄连接句柄……连接句柄语句句柄语句句柄……语句句柄图10.7三种句柄之间的关系数据库系统教程第10章中间件技术1610.3.2ODBC句柄(二)………□□□henvhdbchstmt环境句柄(定义DB应用环境)连接句柄(定义一个DB连接)语句句柄(定义一个SQL语句)图10.8各种句柄之间的关系数据库系统教程第10章中间件技术1710.3.3数据源的连接与断开(1)连接数据源的函数连接数据源的函数有三个,但最有效、最通用的是下面一种格式:SQLConnect(hdbc,szDSN,cbDSN,szUID,cbUID,szAuthStr,cbAuthStr)。其中,参数hdbc是一个已经分配的连接分配;参数szDSN和cbDSN分别表示系统所要连接的数据源名称及其长度;参数szUID和cbUID分别表示用户标识符及其长度;参数szAuthStr和cbAuthStr分别表示权限字符串及其长度(2)断开数据源函数其格式如下:SQLDisconnect(hdbc)其中,参数hdbc是要断开的连接句柄。数据库系统教程第10章中间件技术1810.3.4SQL语句的执行(一)main(){HENVhenv;/*说明henv是一个环境型变量*/HDBChdbc;/*说明hdbc是一个连接型变量*/HSTMThstmt;/*说明hstmt是一个语句句柄变量*/RETCODEretcode;/*说明retcode是一个返回变量*/SQLAllocEnv(&henv);/*分配一个环境句柄*/SQLAllocConnect(henv,&hdbc);/*分配一个连接句柄*/SQLConnect(hdbc,学生,SQL_NTS,NULL,0,NULL,0);/*连接数据源*/SQLAllocStmt(hdbc,&hstmt);/*分配一个语句句柄*/retcode=SQLExecDirect(hstmt,SELECT*FROMS,SQL_NTS);/*执行语句*/……/*结果集处理*/SQLDisconnect(hdbc);/*断开数据源*/SQLFreeStmt(hstmt,SQL_DROP)/*释放一个语句句柄*/SQLFreeConnect(hdbc);/*释放一个连接句柄*/SQLFreeEnv(henv);/*当应用完成后,释放环境句柄*/}数据库系统教程第10章中间件技术1910.3.4SQL语句的执行(二)有准备地执行SQL语句的函数(1)SQL语句预备函数其格式如下:SQLPrepare(hstmt,szSqlStr,cbSqlStr)。其中,参数hstmt是一个有效的语句句柄,参数szSqlStr和cbSqlStr分别表示将要执行的SQL语句的字符串及其长度。(2)SQL语句执行函数其格式如下:SQLExecute(hstmt)。其中参数hstmt是一个有效的语句句柄。数据库系统教程第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章中间件技术2110.4ODBC的符合性级别ODBC使得我们能够访问任何数据源而不必修改应用程序。但在实际使用中存在着一些问题。由于DBMS厂商提供的SQL不同(不是指形式上,而是功能上有多有少),有的SQL功能在某厂商的DBMS上没有实现,则ODBC就不可能为应用程序完成这一功能;有的SQL功能是SQL标准新增加的,而DBMS厂商没有及时跟上,则ODBC同样也无法完成新功能。对于具体DBMS不支持的SQL功能,DBMS要通报给应用程序。而从ODBC本身来讲,它最好支持完全的SQL,这样才能做到应用程序不用修改就可以访问不同的数据源。数据库系统教程第10章中间件技术2210.4.1API符合性的三个级别①核心级API②1级API③2级API数据库系统教程第10章中间件技术2310.4.2SQL符合性的三个级别最小级SQL核心级SQL扩展级SQL数据库系统教程第10章中间件技术2410.4.3ODBCAPI与SQLCLI之间的协调Microsoft公司于1991年11月提出了一个关于ODBC的体系结构,并在1992年发布了ODBC1.0规范,随后以软件开发工具包(SDK)形式出版并发行了这种面向SQL的API。数据库公司国际财团SQLAccessGroup(SAG)和标准化组织X/Open在1992年联合出版了一个规范,该规范定义了调用级界面(CallLevelInterface),CLI)标准。1993年,Microsoft公司推出了ODBC2.0规范,并于1994年出版了ODBC2.0SDK。Microsoft在1998年出版的ODBC3.0规范中,作了一些修改,目的是更进一步接近SQL标准。SQL3(即SQL99)的第三部分介绍了SQL/CLI。数据库系统教程第10章中间件技术2510.4.4典型的数据库应用系统开发工具PowerBilderDelphiVisualBasicDeveloper/2000数据库系统教程第10章中间件技术2610.5.1Java简介Java语言Java的工作方式Java的特性Java的应用程序和小程序数据库系统教程第10章中间件技术2710.5.2JDBC的提出JDBC是执行SQL语句的JavaAPI。JDBC是“JavaDataBaseConnectivity”(JDBC数据库连接)的缩写。JDBC原来是JavaSoft公司设计的Java语言的数据库访问API。最初的Java语言本身并没有访问DB的能力,JDBC是第一个支持Java语言的标准的数据库API。1996年夏天,Sun公司推出了JDBC工具。现在JDBC驱动程序已经被大多数主流数据库所用。JDBC由一组用Java语言编写的类与接口组成。JDBC扩充了Java的应用范围,用Java与JDBCAPI可以发布一种包含远程数据库信息的Applet(小应用程序)的页面。数据库系统教程第10章中间件技术2810.5.3JDBC的基本功能建立与数据库的连接发送SQL语句处理结果数据库系统教程第

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功