从某种意义上来讲,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. docker不能正常使用cron任务

    基于centos7的docker不能正常使用cron任务问题 修改docker centos7镜像对应的容器的/etc/pam.d/crond文件 把required 修改成sufficient,如下 ...

  2. html苹方字体

    苹方提供了六个字重,font-family 定义如下: 苹方-简 常规体 font-family: PingFangSC-Regular, sans-serif; 苹方-简 极细体 font-fami ...

  3. 使用sql实现固定样式的输出

    declare @i int ,@j int, @k varchar(60)   set @i = 1   while   @i <= 12    begin        set @j = 1 ...

  4. 数据库sql优化总结之5--数据库SQL优化大总结

    数据库SQL优化大总结 小编最近几天一直未出新技术点,是因为小编在忙着总结整理数据库的一些优化方案,特此奉上,优化总结较多,建议分段去消化,一口吃不成pang(胖)纸 一.百万级数据库优化方案 1.对 ...

  5. Dictionary导致IIS CPU 100%案例分析 学会使用WinDbg工具

    .NET  开发注意 线程安全性问题.弄不好可能会导致CPU满载 特别主要 Dictionary作为静态变量使用的情况. 解决方法: Dictionary 换成  ConcurrentDictiona ...

  6. 005 vue路由

    一:元素的获取 1.ref元素获取 可以通过ref获取DOm,也可以获取组件的引用 <!DOCTYPE html> <html lang="en"> < ...

  7. maven引入CDH依赖包

    1. POM文件加入仓库 注意:id要和仓库配置中的id一致. <repositories> <repository> <id>cloudera</id> ...

  8. nginx反向代理结合apache和php的配置示例

    .前端nginx主配置文件 # cat nginx.conf worker_processes ; #pid logs/nginx.pid; pid /data/www/logs/nginx.pid; ...

  9. mysql Last_SQL_Errno: 1197 Coordinator stopped because there were error(s) in the worker(s)问题处理

    Last_SQL_Errno: 1197 Coordinator stopped because there were error(s) in the worker(s). The most rece ...

  10. ios开发 需要注意的地方、注意事项

    /* 一.LaunchScreenLaunchScreen产生原因:代替之前的启动图片好处:1.可以展示更多的东西2.可以只需要出一个尺寸的图片. 启动图片的优先级启动图片 < LaunchSc ...