从某种意义上来讲,ODBC实际上主要是一个数据库的访问库(API),它包含访问不同数据库所要求的ODBC驱动程序。应用程序要操作不同类型的数据库,只要调用ODBC所支持的函数,动态链接到不同的驱动程序上即可。

上图可看出,应用程序调用ODBC API(函数调用),但ODBC API不直接访问数据库,通过驱动程序管理器与数据库交换信息。驱动程序管理器将应用程序对ODBC API的调用传递给专用的ODBC驱动程序(DBMS提供),而该驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。

各个组件部分的用途

1.应用程序

调用ODBC API函数,递交SQL语句给DBMS,搜索出结果,并进行处理。

2.ODBC管理器

安装ODBC驱动程序和注册数据源,注册一个数据源(提供数据库位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系)这样,只要应用程序将数据源名提供给ODBC管理器,ODBC管理就能建立起与相应数据库的连接。

3.驱动程序管理器

管理ODBC驱动程序,对用户是透明的一个动态连接库ODBCADM。DLL(包含在ODBC32.DLL中),用于连接各种DBS的DBMS驱动程序(如Oracle、Foxpro、Sybase等驱动程序)。ODBCADM.DLL加载(通过WINDOWS系统注册表找到对应关系)符合ODBC接口规范的任何DBMS厂商的驱动程序(DLL)。

4.ODBC驱动程序

本质是一些DLL,查看系统所安装的ODBC驱动程序:“开始”/“设置”/“控制面板”/“管理工具”/“数据源 (ODBC)”/“驱动程序”,如图:

若系统所安装的ODBC数据库驱动程序里没有你想要的ODBC驱动,如Oracle的ODBC驱动,只需要安装ORACLE软件,系统会自动的将ORACLE对应的驱动程序加载到ODBC驱动程序里。

2.3_Database Interface ODBC组成原理的更多相关文章

  1. 2.4_Database Interface ODBC数据库驱动程序类型(单层与多层)

    两大类:单层驱动程序和多层驱动程序 1.单层数据库驱动程序 早期的xBASE数据库系统的驱动程序就属于单层驱动程序. 单层驱动程序不仅要处理ODBC函数调用,还要解释执行SQL语句,执行数据库管理系统 ...

  2. 2.5_Database Interface ODBC数据源及案例

    分类 用户数据源 用户创建的数据源,称为“用户数据源”.此时只有创建者才能使用,并且只能在所定义的机器上运行.任何用户都不能使用其他用户创建的用户数据源. 系统数据源 所有用户在Windows下以服务 ...

  3. window环境导入odbc数据源

    <ODBC指南>中只介绍了window环境如何配置odbc数据源,但是没有介绍如何导入数据源驱动,这里做个补充. 在没有导入数据源驱动之前,按照文档操作是查不到kingbaseES的odb ...

  4. 轻量级开源嵌入式关系数据库sqlite基本使用及接口初识

    preface,先闲来扯下蛋: 嵌入式数据库,NoSQL的是BerkeleyDB和InnoDB,leveDb.TC(个人较不熟悉),关系型嵌入式是SQLite; 服务器性质的NoSQL服务器,如Red ...

  5. SQLDirect 6.5 Source (Delphi 5-10.1 Berlin)

    Description:SQLDirect Component Library is a light-weight Borland Database Engine replacement for Bo ...

  6. KDB_Database_Link 使用介绍

    kdb_database_link 是 KingbaseES 为了兼容oracle 语法而开发的跨数据库访问扩展,可用于访问KingbaseES, Postgresql , Oracle .以下分别介 ...

  7. 2.2_Database Interface:ODBC基本概念

    一.无ODBC时代 一般来讲不同的数据库厂商都有自己的数据库开发包,这些开发包支持两种模式的数据库开发; 1.预编译的嵌入模式(例如Oracle的ProC,SQL Server的ESQL) 2.API ...

  8. IBM CLI 和 ODBC

    Installing and Configuring DB2 Clients Running CLI/ODBC Programs The DB2 Call Level Interface (CLI) ...

  9. ODBC连接发生错误:未发现数据源名称并且未指定默认驱动程序

    程序在使用ODBC方式连接数据库时发生错误: ERROR [IM002] [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序. 什么原因造成的呢? 本人使用&l ...

随机推荐

  1. CTF 文件上传

    目录 一.客户端校验 1.禁用JS 2.抓包改包 二.服务端校验 1.MIME类型检测 2.后缀名黑名单校验 3.后缀名白名单校验 4.内容头校验 5.竞争上传 6.过滤<?或php 两种校验方 ...

  2. delete、truncate、drop三种删除语句联系与区别

    相同点: 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. 不同点: 1. t ...

  3. ElasticSearch5.2.2 安装(老版本)

    https://www.elastic.co/downloads/elasticsearchElasticSearch是一个高可扩展的开源的全文搜索分析引擎.它允许你快速的存储.搜索和分析大量数据.E ...

  4. 010 @ControllerAdvice

    一:说明 1.说明 这个注解是用于写一个异常捕获的处理类. 这里介绍全局捕获异常,自定义异常捕获 2.ps 在这里,顺便写一下基础的自定义异常类,以后方便用于业务异常继承 二:全局异常捕获 1.处理类 ...

  5. typescript - 6.泛型

    泛型类 class MinClas<T>{ public list:T[]=[]; add(value:T):void{ this.list.push(value); } min():T{ ...

  6. docker登录报错Error response from daemon: Get https://192.168.30.10/v1/users/: dial tcp 192.168.30.10:443: connect: connection refused

    背景描述: 登录docker报错: [root@localhost sysconfig]# docker login 192.168.30.10 Username (newcs06): newcs06 ...

  7. 必须要注意的 C++ 动态内存资源管理(五)——智能指针陷阱

    必须要注意的 C++ 动态内存资源管理(五)——智能指针陷阱 十三.小心使用智能指针.         在前面几节已经很详细了介绍了智能指针适用方式.看起来,似乎智能指针很强大,能够很方便很安全的管理 ...

  8. SQLite添加新的字段

    通过alter添加新的字段SQL语句 "ALTER TABLE 'DiHKChatMessage' ADD 'phoneNum' varchar"; 但是如果这个字段已经存在的话, ...

  9. laravel 解决 Please provide a valid cache path 问题

    这是因为laravel的缓存路径没有找到 laravel缓存文件路径是在 config/cache.php中设置,默认存在storage文件夹中 解决: 创建目录: mkdir -p storage/ ...

  10. 伟程君解决端口被占用问题(接口jmeter 本地端口被占用完了,jmeter报错的问题)(亲测是可以的)

    1.在目录下创建文件local.conf(没有就创建目录和文件) touch /etc/sysctl.d/local.conf mkdir(创建文件夹) touch(创建文件) 2.往local.co ...