资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第7 7章章 数据库系统的访问数据库系统的访问对于那些相对独立的软件供应商而言,经常要为每一个 DBMS 编写一个版本的应用程序, 或者为每个要访问的 DBMS 编写针对 DBMS 的代码。这就意味着,大量的资源都耗在了编写 和维护 DB 的访问上,更不用说应用程序了。此时应用程序的评价标准不再是质量,而是它 能否在给定的 DBMS 中访问数据库。 这就需要开放的数据库连接,就是人们需要用一种新的方法来访问不同的数据库。为 此,在 C/S,B/S 系统中必须广泛使用访问接口技术,以隐藏各种复杂性,屏蔽各种系统之 间的差异。常见的数据库访问接口的技术有固有调用、ODBC、JDBC、OLE DB、DAO、ADO、ADO.NET 以及基于 XML 的数据库访问等几种流行的方式。这其中以 ODBC 技 术和 JDBC 技术应用最广泛,也是目前最为优秀的访问接口方式。 本章主要对几种常见的数据库访问技术(如固有调用、ODBC、JDBC、OLE DB、DAO、ADO、ADO.NET 以及基于 XML 的数据库访问等)进行介绍。7.1 数据库的访问接口所谓访问接口是指分布式环境中保证操作系统、通信协议、数据库等之间进行对话、 互操作的软件系统。 访问接口的作用是保证网络中各部件(软件和硬件)之间透明地连接,即隐藏网络部 件的异构性,尤其保证不同网络、不同 DBMS 和某些访问语言的透明性,即下面三个透明性。 网络透明性:能支持所有类型的网络。 服务器透明性:不管服务器上的 DBMS 是何种型号(ORACLE、SYBASE、DB2 等) ,一 个好的访问接口都能通过标准的 SQL 语言与不同 DBMS 上的 SQL 语言连接起来。 语言透明性:客户机可用任何开发语言进行发送请求和接受回答,被调用的功能应 该像语言那样也是独立的。 应用系统访问数据库的接口方式有多种,本节介绍固有调用、ODBC 和 JDBC。7.1.17.1.1 固有调用固有调用每个数据库引擎都带有自己的包含用于访问数据库的 APl 函数的动态链接库 DLL,应 用程序可利用它存取和操纵数据库中的数据。如果应用程序直接调用这些动态链接库,就 说它执行的是“固有调用” ,因为该调用对于特定的数据库产品来说是“固有” (专用)的。固有调用接口的优点是执行效率高,由于是“固有” ,编程实现较简单。但它的缺点 也是很严重的:不具通用性。对于不同的数据库引擎,应用程序必须连接和调用不同的专 用的动态链接库,这对于网络数据库系统的应用是极不方便的。7.1.27.1.2 ODBCODBCODBC 是“开放数据库互连”(Open Database Connectivity)的简称。ODBC 是 Microsoft 公司提出的、当前被业界广泛接受的应用程序通用编程接口(API)标准,它以 X/Open 和 ISO/IEC 的调用级接口(CLI)规范为基础,用于对数据库的访问。我们可以用如下图示来说明 ODBC 概念。ODBC 实际上是一个数据库访问函数库,使应用程序可以直接操纵数据库中的数据。 ODBC 是基于 SQL 语言的,是一种在 SQL 和应用界面之间的标准接口,它解决了嵌入式 SQL 接口非规范核心,免除了应用软件随数据库的改变而改变的麻烦。ODBC 的一个最显著的优 点是,用它生成的程序是与数据库或数据库引擎无关的,为数据库用户和开发人员屏蔽了 异构环境的复杂性,提供了数据库访问的统一接口,为应用程序实现与平台的无关性和可 移植性提供了基础,因而 ODBC 获得了广泛的支持和应用。1. ODBC 结构结构ODBC 结构由四个主要成分构成:应用程序、驱动程序管理器、驱动程序、数据源。其 构成及体系结构说明如下: 应用程序 执行处理并调用 ODBC API 函数,以提交 SQL 语句并检索结果。 驱动程序管理器(Driver Manager) 根据应用程序需要加载/卸载驱动程序,处理 ODBC 函数调用,或把它们传送到驱动程序。 驱动程序 处理 ODBC 函数调用,提交 SQL 请求到一个指定的数据源,并把结果 返回到应用程序。如果有必要,驱动程序修改一个应用程序请求,以使请求与相关的 DBMS 支持的语法一致。 数据源 包括用户要访问的数据及其相关的操作系统、DBMS 及用于访问 DBMS 的网络平台。 其体系结构图如下:应用程序应用程序应用程序公共接口API网络软件SYBASEDB2ORACLESQL ServerFoxproODBC数据库应用程序SQL Server 驱动程序Oracle 驱动程序DB2 驱动程序Sybase 驱动程序Foxpro 驱动程序驱动程序管理器SQL Server 数据源Oracle 数据源Foxpro 数据源Sybase 数据源DB2 数据源DBDBDBDBDB图 7-1 ODBC 概念图图 7-2 ODBC 的体系结构图为达到通用的效果,ODBC 在应用程序和特定的数据库之间插入了一个 ODBC 驱动程序 管理器(ODBC Driver Manager)。驱动程序管理器为应用程序加载或卸载驱动程序,负责管 理应用程序中 ODBC 函数在 DLL 中函数的绑定(Binding),它还处理几个初始化 ODBC 调用, 提供 ODBC 函数的入口点,进行 ODBC 调用的参数合法性检查等。 每种数据库引擎都需要向 ODBC 驱动程序管理器注册它自己的 ODBC 驱动程序,这种驱 动程序对于不同的数据库引擎是不同的。ODBC 驱动程序管理器能将与 ODBC 兼容的 SQL 请 求从应用程序传给这种独一无二的驱动程序,随后由驱动程序把对数据库的操作请求翻译 成相应数据库引擎所提供的固有调用,对数据库实现访问操作。 ODBC 通过驱动程序来提供数据库独立性。驱动程序是一个用于支持 ODBC 函数调用的 模块(通常是一个动态链接库 DLL),应用程序调用驱动程序所支持的函数来操纵数据库。 若想使应用程序操作不同类型的数据库,就要动态链接到不同的驱动程序上。ODBC 驱 动程序处理 ODBC 函数调用,将应用程序的 SQL 请求提交给指定的数据源,接受由数据源返 回的结果,传回给应用程序。 ODBC 的 API 一致性级别分为三级:核心级、扩展 1 级和扩展 2 级。核心级包括最基本 的功能,包括分配、释放环境句柄、数据库连接、执行 SQL 语句等,核心级函数能满足最 基本的应用程序要求。扩展 1 级在核心级的基础上增加了一些函数,通过它们可以在应用 程序中动态地了解表的模式,可用的概念模型类型及它们的名称等。扩展 2 级在扩展 1 级 的基础上又增加了一些函数。通过它们可以了解到关于主关键字和外来关键字的信息、表 和列的权限信息、数据库中的存储过程信息等,并且还有更强的游标和并发控制功能。2. ODBC 接口函数按功能接口函数按功能 分配和释放内存。这组函数用于分配必要的句柄:连接句柄、环境句柄和语句句柄。连接句柄定义一个数据库环境,环境句柄定义一个数据库连接,语句句柄定义一条 SQL 语句。执行分配函数时首先分配内存,然后定义所需的数据结构,并对指向数据结构 的句柄赋值。一但句柄已经分配,应用系统便可以把它传递给后续的接口函数,指出该函 数所作用的环境、连接或语句。 连接。在应用系统的流程控制中,一旦环境(包括其句柄)已经分配,便可以建立 二个或者多个连接句柄;同样地,语句句柄也是如此。有了用于连接的函数,用户便能与 服务器建立自己的连接。但在退出应用系统时,应关闭与服务器的连接。 执行 SQL 语句。指定和执行 SQL 语句的方法有两种:准备的和直接的。如果想让 应用系统多次提交 sQL 语句并且可能修改参数值,便使用准备的执行;如果只让应用系统 提交一次 SQL 请求,便使用直接的执行。 接收结果。这组函数负责处理从 SQL 语句结果集合中检索数据,并且检索与结果 集合相关的信息。例如,描述结果集合中的一列以及属性,取出结果集合的下一行,计算 一条 SQL 语句所影响的行数等。任何一个函数都可以在派生表或结果集合中使用光标,指 出它当前在结果集合中的哪一行。 事务控制。这组函数允许提交或者重新运行事务。尽管 ODBC 的缺省模式是“自动提交” ,这时每一条 SQL 语句都是一个完整的事务,但是也可以设置一个连接选项,从而允 许使用“人工提交”模式。这种“人工提交”模式允许事务一直打开,直至应用系统提交。 错误处理和其他事项。该组函数用于返回与句柄相关的错误信息。另一个函数允 许人们取消一条 SQL 语句。 ODBC 的基本流程控制是:初始化 SQL 处理终止。在初始化阶段分配环境,包括分配环 境句柄、连接句柄和语句句柄,与服务器连接;在 SQL 处理阶段执行 SQL 语句和检索操作; 在终止阶段释放语句句柄、环境句柄、连接句柄,与服务器断开。如图 7-3 所示。3. 数据源的连接与断开数据源的连接与断开 连接数据源的函数 连接数据源的函数有三个,但最有效、最通用的是下面一种格式: SQLConnect(hdbc,szDSN,cbDSN,szUID,cbUID,szAuthStr,cbAuthStr) 。其中,参数 hdbc 是一个已经分配的连接分配;参数 szDSN 和 cbDSN 分别表示系统所要连接的数据源名 称及其长度;参数 szUID 和 cbUID 分别表示用户标识符及其长度;参数 szAuthStr 和 cbAuthStr 分别表示权限字符串及其长度。 断开数据源函数 其格式如下:SQL Disconnect(hdbc)其中,参数 hdbc 是要断开的连接句柄。 分配环境句柄分配连接句柄与服务器连接分配语句句柄初始化释放环境句柄SQL处理释放语句句柄语句处理和检索部分与服务器断开释放连接句柄终止相应的函数名SQLAllocEnvSQLAllocConnectSQLConnectSQLAllocStmtSQLExecDirect (直接执行函数) SQLPrepare(语句预备函数) SQLExecute(语句执行函数)SQLDisconnectSQLFreeEnvSQLFreeConnectSQLFreeStmt图 7-3 ODBC 的基本流程控制图具体用 SQL 语句来执行实现数据源的连接与断开代码片段如下 SQL 语句的执行: main() ASD asd;*说明 asd 是一个环境型变量* LZJ lzj;*说明 lzj 是一个连接型变量*JDK jdk;*说明 jdk 是一个语句句柄变量* RETCODE retcode;*说明 retcode 是一个返回变量* SQLAllocEnv( /建立与数据库的接 Statement stmt=con.createstatement(); /建立语句对象ResultSet rs=stmt.executeQuery(“SELECT a,b,c FROM Table1”); /运行 SQL 语句,返回数据/库操作结果while (rs.next() int x=getInt(“a”); /获得数据库表记录 a 项的值 string s=getstring(“b”); /获得数据库表记录 b 项的值 float f=getFloat(“c”); /获得数据库表记录 c 项的值3. JDBC API 的特点的特点 在 SQL 水平上的 API JDBC 是为 Java 语言定义的一个 SQL 调用级界面,也就是说其关键在于执行基本的 SQL 说明和取回结果。在此基础上可以形成更高层次的 API,其中的接口包括直接将基本表与 Java 中的类相对应,提供更多的通用查询的语义树表示等。 与 SQL 的一致性 一般数据库系统在很大范围内支持
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号