您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 数据库系统教程--第10章+中间件技术
第10章中间件技术本章重要概念(1)中间件的定义和作用(2)ODBC分层的体系结构:应用程序,驱动程序管理器,DB驱动程序,ODBC数据源。(3)ODBC接口:应用程序基本流程,ODBC句柄,ODBC连接,SQL语句的执行。ODBC两套符合性级别。典型的DB应用系统开发工具。(4)JDBC的基本功能,JDBC的结构,JDBC接口。前言对于那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序,或者为每个要访问的DBMS编写针对DBMS的代码。这就意味着,大量的资源都耗在了编写和维护DB的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它能否在给定的DBMS中访问数据库。这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为此,在C/S系统中必须广泛使用中间件技术,以隐藏各种复杂性,屏蔽各种系统之间的差异。ODBC技术和JDBC技术就是这种优秀的中间件技术。10.1.1中间件的定义定义10.1中间件(middleware)是分布式环境中保证操作系统、通信协议、数据库等之间进行对话、互操作的软件系统。10.2.2中间件的作用中间件的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部件的异构性,尤其保证不同网络、不同DBMS和某些访问语言的透明性,即下面三个透明性。①网络透明性:能支持所有类型的网络。②服务器透明性:不管服务器上的DBMS是何种型号(ORACLE、SYBASE、DB2等),一个好的中间件都能通过标准的SQL语言与不同DBMS上的SQL语言连接起来。③语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应该像语言那样也是独立的。10.2.1ODBC概念应用程序应用程序应用程序……公共接口API网络软件SYBASEDB2ORACLESQLServerFoxpro10.2.2ODBC的体系结构(一)ODBC数据库应用程序SQLServer驱动程序Oracle驱动程序DB2驱动程序Sybase驱动程序Foxpro驱动程序驱动程序管理器SQLServer数据源Oracle数据源Foxpro数据源Sybase数据源DB2数据源DBDBDBDBDB10.2.2ODBC的体系结构(二)应用程序的主要功能是:调用ODBC函数,递交SQL语句给DBMS,检索出结果,并进行处理。驱动程序管理器是一个动态连接库(DLL),用于连接各种DBS的DBMS驱动程序(如Oracle、Foxpro、Sybase等驱动程序),管理应用程序和DBMS驱动程序之间的交互作用(通信)。应用程序通过调用驱动程序所支持的函数来操纵数据库。驱动程序也是一个动态连接库(DLL)。10.2.2ODBC的体系结构(三)网络环境下基于单层驱动程序的ODBC结构工作站ODBC数据库应用程序驱动程序管理器单层驱动程序(包含数据库引擎)数据库文件(*.DBF)网络文件服务器10.2.2ODBC的体系结构(四)基于多层驱动程序的ODBC结构ODBC数据库应用程序驱动程序管理器多层驱动程序客户端网络支撑软件客户端(网络)SQL请求数据库服务器操作结果数据库软件(*.DBF)数据库引擎服务器网络支撑软件10.2.2ODBC的体系结构(五)基于网关机制的多层驱动程序的ODBC结构ODBC数据库应用程序客户端网络支撑软件客户浏览器(网络)数据库引擎的体系结构(六)①用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。②系统数据源:所有用户和在WindowsNT下以服务方式运行的应用程序均可使用系统数据源。③文件数据源:文件数据源是ODBC3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。10.2.3ODBC的特性①ODBC是一个调用层的接口②ODBC定义了标准的SQL语法③ODBC提供一个驱动程序管理器来管理并同时访问多个DBMS系统10.3.1ODBC应用程序的基本流程分配环境句柄分配连接句柄与服务器连接分配语句句柄初始化释放环境句柄SQL处理释放语句句柄语句处理和检索部分与服务器断开释放连接句柄终止相应的函数名SQLAllocEnvSQLAllocConnectSQLConnectSQLAllocStmtSQLExecDirect(直接执行函数)SQLPrepare(语句预备函数)SQLExecute(语句执行函数)SQLDisconnectSQLFreeEnvSQLFreeConnectSQLFreeStmt10.3.2ODBC句柄(一)应用程序环境句柄(只有一个)连接句柄连接句柄……连接句柄语句句柄语句句柄……语句句柄10.3.2ODBC句柄(二)………□□□henvhdbchstmt环境句柄(定义DB应用环境)连接句柄(定义一个DB连接)语句句柄(定义一个SQL语句)10.3.3数据源的连接与断开(1)连接数据源的函数连接数据源的函数有三个,但最有效、最通用的是下面一种格式:SQLConnect(hdbc,szDSN,cbDSN,szUID,cbUID,szAuthStr,cbAuthStr)。其中,参数hdbc是一个已经分配的连接分配;参数szDSN和cbDSN分别表示系统所要连接的数据源名称及其长度;参数szUID和cbUID分别表示用户标识符及其长度;参数szAuthStr和cbAuthStr分别表示权限字符串及其长度。(2)断开数据源函数其格式如下:SQLDisconnect(hdbc)其中,参数hdbc是要断开的连接句柄。10.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.3.4SQL语句的执行(二)有准备地执行SQL语句的函数(1)SQL语句预备函数其格式如下:SQLPrepare(hstmt,szSqlStr,cbSqlStr)。其中,参数hstmt是一个有效的语句句柄,参数szSqlStr和cbSqlStr分别表示将要执行的SQL语句的字符串及其长度。(2)SQL语句执行函数其格式如下:SQLExecute(hstmt)。其中参数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.4ODBC的符合性级别ODBC使得我们能够访问任何数据源而不必修改应用程序。但在实际使用中存在着一些问题。由于DBMS厂商提供的SQL不同(不是指形式上,而是功能上有多有少),有的SQL功能在某厂商的DBMS上没有实现,则ODBC就不可能为应用程序完成这一功能;有的SQL功能是SQL标准新增加的,而DBMS厂商没有及时跟上,则ODBC同样也无法完成新功能。对于具体DBMS不支持的SQL功能,DBMS要通报给应用程序。而从ODBC本身来讲,它最好支持完全的SQL,这样才能做到应用程序不用修改就可以访问不同的数据源。10.4.1API符合性的三个级别①核心级API②1级API③2级API10.4.2SQL符合性的三个级别最小级SQL核心级SQL扩展级SQL10.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.4.4典型的数据库应用系统开发工具PowerBilderDelphiVisualBasicDeveloper/200010.5.1Java简介Java语言Java的工作方式Java的特性Java的应用程序和小程序10.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.5.3JDBC的基本功能建立与数据库的连接发送SQL语句处理结果10.5.4JDBC与CGI的比较Java应用程序CGI脚本Web服务器数据库Java应用程序JDBC服务器数据库10.6.1JDBC数据库设计方法Java应用程序(application)JDBC客户机DBMSDB服务器DBMS专用协议Java应用程序(application)JDBC客户机Java应用程序(application)JDBCJava应用程序(application)JDBC客户机DBMSDB服务器DBMSDB服务器DBMS专用协议JavaWeb服务JDBC应用服务器DBMSDB服务器DBMS专用协议Java小应用程序(applet)客户机HTTPRMI调用JavaWeb服务JDBC应用服务器DBMSDB服务器DBMS专用协议JavaWeb服务JDBC应用服务器JavaWeb服务JDBCJavaWeb服务JDBC应用服务器DBMSDB服务器DBMSDB服务器DBMS专用协议Java小应用程序(applet)客户机HTTPRMI调用Java小应用程序(applet)客户机Java小应用程序(applet)客户机HTTPR
本文标题:数据库系统教程--第10章+中间件技术
链接地址:https://www.777doc.com/doc-2428618 .html