好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

数据库系统简明教程(15).ppt

57页
  • 卖家[上传人]:wt****50
  • 文档编号:50264705
  • 上传时间:2018-08-07
  • 文档格式:PPT
  • 文档大小:718KB
  • / 57 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 第十五章 开放数据库互连(ODBC)• ODBC优点:– 移植性好– 能同时访问不同的数据库– 共享多个数据资源 第十五章 开放数据库互连(ODBC)15.1 数据库互连概述15.2 ODBC工作原理概述 15.3 使用ODBC的系统结构15.4 ODBC API 基础 15.5 ODBC的工作流程15.6 小结15.1 数据库互连概述• ODBC产生的原因:– 由于不同的数据库管理系统的存在,在某个RDBMS下编写的应用程序就不能在另一个RDBMS下运行 – 许多应用程序需要共享多个部门的数据资源,访问不同的RDBMS 数据库互连概述(续)• ODBC:– 是微软公司开放服务体系(Windows Open Services Architecture,WOSA)中有关数据库的一个组成部分 – 提供了一组访问数据库的标准API • ODBC约束力:– 规范应用开发– 规范RDBMS应用接口15.2 ODBC工作原理概述 ODBC的基本思想是为用户提供简单、标准、透明的数据库连接的公共编程接口,开发厂 商根据ODBC的标准去实现底层的驱动程序,这个驱动对用户是透明的,并允许根据不同的 DBMS采用不同的技术加以优化实现,这就利于不断吸收新的技术而趋完善。

      15.2 ODBC工作原理概述应用程序1应用程序n数据库调用转换接口OracleDB2SQL Server数据库A数据库B数据库C客户端网络服务器15.3 使用ODBC的系统结构• ODBC应用系统的体系结构 :一、 用户应用程序 二、 驱动程序管理器 三、 数据库驱动程序四、 ODBC数据源管理 一、 应用程序• ODBC应用程序包括的内容: – 请求连接数据库; – 向数据源发送SQL语句;– 为SQL语句执行结果分配存储空间,定义 所读取的数据格式;– 获取数据库操作结果,或处理错误;– 进行数据处理并向用户提交处理结果;– 请求事务的提交和回滚操作;– 断开与数据源的连接 二、驱动程序管理器 • 驱动程序管理器:用来管理各种驱动程序 – 包含在ODBC32.DLL中 – 管理应用程序和驱动程序之间的通信 – 建立、配置或删除数据源并查看系统当前所安装的数据库 ODBC驱动程序– 主要功能:Ø装载ODBC驱动程序Ø选择和连接正确的驱动程序Ø管理数据源Ø检查ODBC调用参数的合法性Ø记录ODBC函数的调用等 三、数据库驱动程序• ODBC通过驱动程序来提供应用系统与数据库平台的独立性 • ODBC应用程序不能直接存取数据库– 其各种操作请求由驱动程序管理器提交给某个RDBMS的ODBC驱动程序– 通过调用驱动程序所支持的函数来存取数据库。

      – 数据库的操作结果也通过驱动程序返回给应用程序– 如果应用程序要操纵不同的数据库,就要动态地链接到不同的驱动程序上 数据库驱动程序(续)• ODBC驱动程序类型:– 单束Ø数据源和应用程序在同一台机器上Ø驱动程序直接完成对数据文件的I/O操作Ø驱动程序相当于数据管理器 – 多束 Ø支持客户机/服务器、客户机/应用服务器/数据库服务器等网络环境下的数据访问Ø由驱动程序完成数据库访问请求的提交和结果集接收Ø应用程序使用驱动程序提供的结果集管理接口操纵执行后的结果数据 四、ODBC数据源管理 • 数据源:是最终用户需要访问的数据,包含了数据库位置和数据库类型等信息,是一种数据连接的抽象 • 数据源对最终用户是透明的 – ODBC给每个被访问的数据源指定唯一的数据源名(Data Source Name,简称DSN),并映射到所有必要的、用来存取数据的低层软件– 在连接中,用数据源名来代表用户名、服务器名、所连接的数据库名等– 最终用户无需知道DBMS或其他数据管理软件、网络以及有关ODBC驱动程序的细节ODBC数据源管理(续)例如,假设某个学校在MS SQL Server和Access上创建了两个数据库:学校人事数据库和教学科研数据库。

      – 学校的信息系统要从这两个数据库中存取数据– 为方便与两个数据库连接,为学校人事数据库创建一个数据源名PERSON,为教学科研数据库创建一个名为EDU的数据源– 当要访问每一个数据库时,只要与PERSON和EDU连接即可,不需要记住使用的驱动程序、服务器名称、数据库名 15.4 ODBC API 基础• ODBC 应用程序接口的一致性 – API一致性ØAPI一致性级别有核心级、扩展1级、扩展2级– 语法一致性Ø语法一致性级别有最低限度SQL语法级、核心SQL语法级、扩展SQL语法级 ODBC API 基础(续)一、 函数概述二、 句柄及其属性三、 数据类型一、 函数概述• ODBC 3.0 标准提供了76个函数接口:– 分配和释放环境句柄、连接句柄、语句句柄;– 连接函数(SQLDriverconnect等);– 与信息相关的函数(如获取描述信息函数SQLGetinfo、SQLGetFuction);– 事务处理函数(如SQLEndTran);– 执行相关函数(SQLExecdirect、SQLExecute等);– 编目函数,ODBC 3.0提供了11个编目函数如SQLTables、SQLColumn等,应用程序可以通过对编目函数的调用来获取数据字典的信息如权限、表结构等 函数概述(续)• ODBC 1.0和ODBC 2.x、ODBC 3.x函数使用上有很多差异 • MFC ODBC对较复杂的ODBC API进行了封装,提供了简化的调用接口 二、 句柄及其属性• 句柄是32位整数值,代表一个指针 • ODBC 3.0中句柄分类:– 环境句柄– 连接句柄– 语句句柄– 描述符句柄 句柄及其属性(续)• 应用程序句柄之间的关系 应用程序句柄之间的关系 句柄及其属性(续)1. 每个ODBC应用程序需要建立一个ODBC环境,分配一个环境句柄,存取数据的全局性背景如环境状态、当前环境状态诊断、当前在环境上分配的连接句柄等;2. 一个环境句柄可以建立多个连接句柄,每一个连接句柄实现与一个数据源之间的连接;句柄及其属性(续)3. 在一个连接中可以建立多个语句句柄,它不只是一个SQL语句,还包括SQL语句产生的结果集以及相关的信息等;4. 在ODBC 3.0中又提出了描述符句柄的概念,它是描述SQL语句的参数、结果集列的元数据集合。

      三、 数据类型 • ODBC数据类型:– SQL数据类型:用于数据源 – C数据类型 :用于应用程序的C代码 • 应用程序可以通过SQLGetTypeInfo来获取不同的驱动程序对于数据类型的支持情况 数据类型(续)SQL数据类类型C数据类类型SQL数据类类型数据源之间转换间转换应应用程序变变量传传送 语语句参数( SQLBindparameter) C数据类类型从结结果集列中返 回到应应用程序变变量 (SQLBindcol)应应用程序变变量之间转间转 换换SQL数据类型和C数据类型之间的转换规则15.5 ODBC的工作流程• ODBC的工作流程:ODBC的工作流程(续)[例13]将Access数据库中Student表的数据备份到SQL SERVER数据库中n该应用涉及两个不同的RDBMS中的数据源n使用ODBC来开发应用程序,只要改变应用程序中连接函数(SQLConnect)的参数,就可以连接不同RDBMS的驱动程序,连接两个数据源ODBC的工作流程(续)n 在应用程序运行前,已经在Access和SQL SERVER中分别建立了STUDENT关系表CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNQUE Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));ODBC的工作流程(续)• 应用程序要执行的操作是:– 在Access上执行SELECT * FROM STUDENT;– 把获取的结果集,通过多次执行INSERT INTO STUDENT (Sno,Sname,Ssex,Sage,Sddept) VALUES (?, ?, ?, ?, ?); 插入到SQL SERVER的STUDENT表中 ODBC的工作流程(续)• 操作步骤:一、 配置数据源二、 初始化环境三、 建立连接 四、 分配语句句柄五、 执行SQL语句六、 结果集处理七、 中止处理一、 配置数据源•配置数据源两种方法:⑴运行数据源管理工具来进行配置;⑵使用Driver Manager 提供的ConfigDsn函数来增加、修改或删除数据源•在[例13]中,采用了第一种方法创建数据源。

      因为要同时用到Access和SQL Server,所以分别建立两个数据源,将其取名为AccessODBC和SQLServer 配置数据源(续)[例13]创建数据源的详细过程 #include #include #include #include #include #include #define SNO_LEN 30 #define NAME_LEN 50 #define DEPART_LEN 100 #define SSEX_LEN 5配置数据源(续)[例13]创建数据源---第一步:定义句柄和变量int main(){/* Step 1 定义句柄和变量 *///以Access开头的表示的是连接Access的变量//以server开头的表示的是连接SQLSERVER的变量SQLHENV Accesshenv, serverhenv; //环境句柄SQLHDBC Accesshdbc,serverhdbc; //连接句柄SQLHSTMT Accesshstmt,serverhstmt; //语句句柄SQLRETURNret;SQLCHAR sName[NAME_LEN],sDepart[DEPART_LEN],sSex[SSEX_LEN], sSno[SNO_LEN];SQLINTEGER sAge;SQLINTEGER cbAge=0, cbSno=SQL_NTS, cbSex=SQL_NTS,cbName=SQL_NTS,cbDepart=SQL_NTS;二、初始化环境• 没有和具体的驱动程序相关联,由Driver Manager来进行控制 ,并配置环境属性 • 应用程序通过调用连接函数和某个数据源进行连接后,Driver Manager才调用所连的驱动程序中的SQLAllocHandle,来真正分配环境句柄的数据结构 初始化环境[例13]创建数据源---第二步:初始化环境/* Step 2 初始化环境 */ret=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, ret=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, ret=SQLSetEnvAttr(Accesshenv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);ret=SQLSetEnvAttr(serverhenv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);三、 建立连接 • 应用程序调用SQLAllocHandle分配连接句 柄,通过SQLConnect、 SQLDriverConnect或 SQLBrowseConnect与数据源连接 • SQLConnect连接函数,输入参数为:– 配置好的数据源名称– 用户ID– 口令 • [例13]中AccessODBC为数据源名字,用户名和密码为空建立连接代码[例13]创建数据源---第三步:建立连接/* Step 3 :建立连接 */ret=SQLAllocHandle(SQL_HANDLE_DBC, Accesshenv, ret=SQL。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.