数据库基础与应用第09章开放数据库互连.ppt
《数据库基础与应用第09章开放数据库互连.ppt》由会员分享,可在线阅读,更多相关《数据库基础与应用第09章开放数据库互连.ppt(77页珍藏版)》请在三一办公上搜索。
1、第9章 开放数据库互连(ODBC),9.1 数据库互连概述9.2 ODBC的工作原理概述9.3 使用ODBC的系统结构9.4 ODBC驱动程序的分类9.5 ODBC的工作流程,退出,9.1 数据库互连概述,提出和产生ODBC的根本原因是不同的数据库管理系统的存在。目前,广泛使用的关系数据库管理系统(RDBMS)有几十种,最常用的也有十几种。,它们之间有许多差异。例如:支持和实现SQL语句的程度不同(有的支持SQL89的基本集,有的支持SQL92的基本集);SQL语句实现的策略和细节有许多不同;支持的数据类型和精度常常不同;,提供的应用编程接口(Application Programming I
2、nterface,简记为API)不同;嵌入式SQL语言语法细节不同;存储过程不同。因此,在某个RDBMS下开发的应用系统就不能在另一个RDBMS下运行。,使数据库系统“开放”,能够彼此相互通信、相互操作、相互访问,简言之能够“数据库互连”。其中开放数据库互连(Open DataBase Connecting,简记为ODBC),是Microsoft公司推出的产品。由于Microsoft公司的地位,ODBC成为数据库之间互连的事实标准。,9.2 ODBC的工作原理概述,开放数据库互连(ODBC)接口是Microsoft公司开放的服务结构(WOSA)中有关数据库的一个组成部分,用于访问数据库的标准调
3、用接口。使用ODBC接口的应用程序可以访问多种不同的数据库系统,同时应用程序对数据库的操作不依赖于任何数据库管理系统,实现应用程序对不同DBMS资源的共享。,为了使一个应用程序能访问不同的数据库系统,人们设想如果应用程序使用标准的数据库调用接口来与数据库互操作,在应用系统和不同的RDBMS之间加一层中间件数据库调用转换接口,由该中间件把应用系统中对数据库的标准调用转换成对某一个特定的RDBMS的调用,如图9.1所示。这样,应用程序与具体的RDBMS平台相隔离,当应用程序连接的RDBMS平台改变时不必改写应用程序,提高了应用系统与RDBMS的独立性,从而使应用系统具有良好的可移植性。这就是ODB
4、C的基本思想。,ODBC提供了一套数据库应用程序接口规范。这套规范包括:为应用程序提供的一套调用层接口函数(Call-Level Interface,简写为CLI)和基于动态连接库的运行支持环境。图9.1中数据库调用转换接口则由ODBC驱动程序管理器(ODBC Driver Manager)和一组RDBMS驱动程序(ODBC Driver)构成,如图9.2所示。ODBC通过使用驱动程序(driver)来提供数据库独立性,进行数据库操作的数据源对应用程序是透明的,所有的数据库操作由对应的DBMS 的ODBC Driver完成。,驱动程序是一个用以支持ODBC函数调用的模块(通常是一个DLL)。O
5、DBC的另一个组件是驱动程序管理器(driver manager)。驱动程序管理器由Microsoft公司提供。驱动程序管理器包含在ODBC.DLL(或在32位版的ODBC的ODBC32.DLL中),可链接到所有ODBC应用程序中。,9.3 使用ODBC的系统结构,使用ODBC开发应用系统时,系统的体系结构如图9.2所示,它由四部分构成:(1)应用程序。(2)驱动程序管理器(ODBC Driver Manager)。(3)数据库驱动程序(ODBC Driver)。(4)数据库平台,包括某一个RDBMS和数据库。,9.3.1 应用程序应用层的应用程序提供用户界面、应用逻辑和事务逻辑。使用ODBC
6、开发数据库应用程序时,应用程序调用标准的ODBC函数和SQL语句。应用层使用ODBC调用接口与数据库进行交互。使用ODBC的接口规范来编写应用程序时,应用程序应该包括的内容有:,(1)请求连接数据库。(2)向数据源发送SQL语句。(3)为SQL语句执行结果分配存储空间,定义所读取的数据格式。(4)获取数据库操作结果;或处理错误。(5)进行数据处理并向用户提交处理结果。(6)请求事务的提交和回滚操作。(7)断开与数据源的连接。下面将使用ODBC开发应用系统的应用程序简称为ODBC应用程序。,9.3.2 驱动程序管理器驱动程序管理器是Microsoft公司ODBC的一部分。顾名思义,驱动程序管理器
7、是用来管理系统中存在的各种驱动程序的。驱动程序管理器的主要功能包括装载ODBC驱动程序、选择和连接正确的驱动程序、管理数据源、检查ODBC调用参数的合法性和记录ODBC函数的调用等,以及当应用层需要时提供驱动程序信息。,9.3.3 数据库驱动程序ODBC是通过驱动程序来提供应用系统与数据库平台的独立性的。驱动程序与具体的RDBMS有关。驱动程序的功能包括以下几个方面:(1)建立与相应RDBMS的连接。(2)向连接的RDBMS提交用户的SQL语句。,(3)根据应用程序的要求,将发送给该RDBMS的数据以及从RDBMS返回的数据进行数据格式和类型转换。(4)向应用程序返回处理结果。(5)将执行过程
8、中RDBMS返回的错误代码转换为ODBC定义的标准错误代码,返回给应用程序。(6)根据需要说明和使用游标。,9.3.4 ODBC数据源管理数据源名(Data Source Name,简称DSN)是应用程序与数据库系统连接的桥梁,它为ODBC驱动程序管理器指出数据库服务器名称,以及用户的默认连接参数等。注意,这里的数据源并不是指某一个数据库,而是用于表达ODBC驱动程序和一个RDBMS特殊连接的命名。,9.4 ODBC驱动程序的分类,因此根据功能和运行模式的不同,驱动程序可以分为多种级别,具体可以从API一致性级别、SQL语法一致性级别和驱动程序类型三个方面来分类。,9.4.1 API一致性级别
9、驱动程序的开发者一般不能实现所有的ODBC函数。API一致性级别决定了应用程序所能调用的函数的种类。API一致性分为三个级别:核心级API;扩展1级API;扩展2级API。,1核心级API核心级API包括最基本的功能,它们构成了驱动程序的核心。核心级API包括分配、释放环境句柄、连接句柄和执行SQL语句等。核心级的驱动程序还能完成其他一些基本的功能,如向语句中传入参数、存取执行结果、目录操作和错误跟踪等。2扩展1级API扩展1级API在核心级API的基础上增加了部分函数,通过这些函数就可以在应用程序中动态地了解表的模式和可用的数据类型等。大多数驱动程序支持扩展1级API。,3扩展2级API扩展
10、2级API在扩展1级API的基础上又增加了部分函数,通过它们可以了解关于主码和外码的信息,表和列的权限信息,以及数据库存储过程的信息等。扩展2级API还提供了强有力的游标和并发控制功能,这是它受欢迎的最主要的原因。,9.4.2 SQL语法一致性级别SQL语法一致性分为三个级别:最低限的SQL语法;核心SQL语法;扩展SQL语法。,1最低限SQL语法最低限SQL语法可以满足大多数应用程序对数据库的操作要求,包括CREATE和DROP表,SELECT、INSERTE、UPDATE和DELETE记录,支持常用的数据类型和若干字符类型及其变形,如CHAR、VARCHAR和LONGVARCHAR等。,2
11、核心SQL语法核心SQL语法在最低限SQL语法的基础上增加了很多必要的功能,包括ALTER表,CREATE和DROP索引,GRANT和REVOKE各种权限给不同的用户。此外,可以在SQL语法中嵌套子查询,还增加了一些数据类型,如短整数和长整数、单精度浮点数和双精度浮点数等。,3扩展SQL语法 扩展SQL语法引进了更复杂的语法,如游标控制语句。增加了日期、时间、二进制数据类型和时间戳(TIMESTAMP)等其他复杂数据类型。,9.4.3 驱动程序类型ODBC驱动程序可以分为单层驱动程序(SINGLETIER DRIVER)和多层驱动程序(MULTITIER DRIVER)。单层驱动程序既具有OD
12、BC功能也处理SQL语句,它实际上就是一个DBMS。多层驱动程序中ODBC功能与DBMS功能相分离,驱动程序负责处理ODBC应用程序中的函数调用,而处理SQL语句的任务由DBMS完成。单层驱动程序的系统结构如图9.3所示。,单层驱动程序不仅要处理ODBC函数调用,还要解释执行SQL语句,即执行RDBMS的功能。多层驱动程序只处理应用程序的ODBC函数调用和数据转换。SQL语句则由驱动程序传递给相应的数据库引擎,由数据库引擎解释执行SQL语句,实现用户的各种操作请求。,9.5 ODBC的工作流程,本节讲解使用ODBC的应用系统大致的工作流程,使读者对一个ODBC会话过程中,应用程序如何通过ODB
13、C进行通信,执行对数据库的操作有一个概要了解。1建立ODBC环境2建立ODBC连接3建立语句句柄4执行SQL语句5终止,例如:SQLHENV henv1;SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv1);,2释放ODBC环境在结束应用系统之前,必须释放为该应用系统保留的所有资源。完成这一过程的ODBC函数是:SQLRETURN SQLFreeHandle(SQLSMALLINT HandleType,SQLHANDLE Handle);例如:SQLAllocHandle(SQL_HANDLE_ENV,henv1);,9.5.2 建立和释
14、放ODBC连接1建立ODBC连接应用系统对每一个要连接的数据源都必须建立一个ODBC连接,分配一个连接句柄(Connection Handle)。SQLRETURN SQLAllocHandle(SQLSMALLINT HandleType,SQLHANDLE InputHandle,SQLHANDLE*OutputHandlePtr);,其中,参数InputHandle是应用系统的环境句柄指针。例如:SQLHDBC hdbc1;SQLAllocHandle(SQL_HANDLE_DBC,henv1,&hdbc1);,2释放ODBC连接当一个应用系统不再需要一个连接句柄时,应该释放该句柄所分配
15、的所有资源。实现这一功能的函数是:SQLRETURN SQLFreeHandle(SQLSMALLINT HandleType,SQLHANDLE Handle);其中,参数Handle是连接句柄。例如:SQLAllocHandle(SQL_HANDLE_DBC,hdbc1);,9.5.3 连接和断开数据源1连接数据源分配了环境句柄和连接句柄之后,就可以连接ODBC的数据源了。连接数据源的函数有多种,但最有效的、最通用的是SQLConnect函数。SQLConnect函数将加载一个RDBMS的驱动程序,并建立与该数据库的连接。,SQLConnect函数的格式是:SQLRETURN SQLCon
16、nect(SQLHDBC ConnectionHandle,SQLCHAR*ServerName,SQLSMALLINT NameLength1,SQLCHAR*UserName,SQLSMALLINT NameLength2,SQLCHAR*Authentication,SQLSMALLINT NameLength3);,其中,参数ConnectionHandle 是一个已经分配的连接句柄;ServerName是一个字符串,表示应用系统所要连接的数据源名称;NameLength1是数据源字符串的长度。,例如:SQLConnect(hdbc1,sademo,SQL_NTS,dba,SQL_NT
17、S,sql,SQL_NTS);该例以用户名“dba”和口令“sql”连接数据源“sademo”。,2断开数据源当有关的数据库存取任务完成之后,应该断开与数据源的连接,关闭与指定连接句柄相关的数据源。这个操作可由SQLDisconnect函数完成。SQLRETURN SQLDisconnect(SQLHDBC ConnectionHandle);,其中,参数ConnectionHandle是要断开的连接句柄。函数的返回值略。例如:SQLDisconnect(hdbc1);,9.5.4 分配和释放语句句柄1分配语句句柄SQL的执行函数用于处理和传递SQL语句,这类函数都要求一个有效的语句句柄作为参
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 基础 应用 09 开放 互连

链接地址:https://www.31ppt.com/p-6296412.html