理解ODBC:DSN、ODBC管理器、驱动程序

  • ODBC

    Open Database Connectivity开放数据库互连维基百科)提供了一种标准的API方法来访问数据库管理系统(DBMS)。

    这些API利用SQL来完成大部分任务。

    微软于1992.9发表,为解决异构数据库间的数据共享而产生。

    WOSA(The Windows Open System Architecture(Windows开放系统体系结构))的主要部分(百度百科)。

  • ODBC实现过程

    ODBC 主要由驱动程序驱动程序管理器组成。

    • 驱动程序是一个用以支持ODBC 函数调用的模块,每个驱动程序对应于相应的数据库,当应用程序从基于一个数据库系统移植到另一个时,只需更改应用程序中由ODBC 管理程序设定的与相应数据库系统对应的别名即可。
    • 驱动程序管理器可链接到所有ODBC 应用程序中,它负责管理应用程序中ODBC 函数与DLL 中函数的绑定。

    ODBC的运用形态通常是由应用程序经过一个称之为ODBC管理器的工具,创建一个DSN,指明需要调用的ODBC驱动程序,从而访问对应的数据库。

    对于用户的应用程序而言,ODBC驱动程序是相对不可见的,用户只需要在ODBC管理器中配置相应的数据库的数据源信息,并登录相应的ODBC驱动程序即可。

    应用程序要访问一个数据库,首先必须用ODBC管理器注册一个数据源(包括三种类型);

    管理器根据数据源提供的数据库位置、类型以及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。

    只要应用程序数据源名DSN)提供给***ODBC***,ODBC就能建立起与相应数据库的连接。

    其中涉及到几个概念:ODBC管理器、DSN、ODBC驱动

  • ODBC(驱动)管理器

    主要有几种实现:

    1. Microsoft ODBC

      微软提供的一个实现,大部分Windows系统上可以找到。

      https://img-blog.csdn.net/20150814093502653?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

    2. unixODBC

      Windows(Linux、Unix、Mac OS)下的一个实现,涵盖了ODBC 3.0的所有API规范。

      提供了类似MicroSoft ODBC那样的GUI配置界面。

      unixODBC现在已经是很多Linux发行版的标准安装模式下的一个必要组件。

    3. iODBC

      iODBC项目(Independent Open DataBase Connectivity)的目标是提供一个平台无关的实现。

      苹果公司从Mac OS X v10.2时代开始,便将iODBC绑定至Mac OS操作系统中。

  • ODBC驱动

    各个数据库厂商通常都为自己的数据库实现了ODBC驱动程序。

  • DSN

    DSN(Data Source Name,数据源名称),是应用程序用来请求连接到ODBC数据源的名称。

    DSN是一种数据结构,包含有关打开数据库连接驱动程序连接到数据库所需的特定数据库信息:数据库名称、 目录、 数据库驱动程序,用户 Id,密码等。

    DSN存储在注册表中或作为单独的文本文件存储。

    分为三种:

    1. 用户DSN

      会把相应的配置信息保存在Windows的注册表中,但是只允许创建该DSN的登录用户使用。

    2. 系统DSN

      同样将有关的配置信息保存在系统注册表中,但是与用户DSN不同的是系统DSN允许所有登录服务器的用户使用。

    3. 文件DSN

      把具体的配置信息保存在硬盘上的某个具体文件(.dsn)中。

      文件DSN允许所有登录服务器的用户使用,而且即使在没有任何用户登录的情况下,也可以提供对数据库DSN的访问支持。此外,因为文件DSN被保存在硬盘文件里,所以可以方便地复制到其它机器中(文件可以在网络范围内共享)。这样,用户可以不对系统注册表进行任何改动就可直接使用在其它机器上创建的DSN。用户DSN和系统DSN的区别在于,用户DSN保存在注册表的HKEY_CURRENT_USER下,而系统DSN保存在HKEY_LOCAL_MACHINE下。

    个人认识,ODBC管理器是一个中转站,用同一套API连接到不同的数据库中,这样应用程序使用这一套API就能连接各种不同的数据库。

    相当于每个数据库在这个ODBC管理器中进行了一个变身得到一个新身份DSN,应用程序通过变身后的新身份DSN找到具体的数据库。

    ODBC API并不直接访问数据库,而是通过驱动程序管理器与数据库交互。

  • Reference

  1. ODBC API开发教程
  2. Microsoft ODBC Driver for SQL Server
  3. 百度百科
  4. 维基百科
  5. [数据库]——ODBC数据源管理器 和 三种DSN(还记得是自己用过吗?)
  6. [数据库]——对于ODBC,OLEDB和ADO目前理解
  7. DSN是什么
  8. ODBC是什么?ODBC有什么用?
  9. Linux/Unix下ODBC的安装、配置与编程
发布了857 篇原创文章 · 获赞 1291 · 访问量 92万+

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/105210502