【数据库】聊聊ODBC

来源:互联网 发布:java简单代码 编辑:程序博客网 时间:2024/05/16 08:42

    自考数据库这本书,昨天终于仔仔细细的都看了一遍,除了范式比较难理解,还有

最后一章的ODBC开放式数据库互连这块知识觉得没有理清,因为当时不管是做学生信息

管理系统还是机房收费系统,建立应用程序和数据库的连接,首先就要配置ODBC,当时

就是跟着视频教程一步步做,但是关于数据库和应用程序交互的内在机制是不理解的,

这次通过看自考书,整理了一下这部分的知识。

1.概念:首先ODBC是Open DataBase Connectivity的缩写,翻译过来就是开放式数据库互连,他是以C/S结构为设计基础的。说白了他就是一个公共的,与数据库无关的应用程序可以通过他,来完成与数据库的交互。ODBC技术使得应用程序与DBMS之间在逻辑上可以分离,使得应用程序具有数据库无关性。ODBC定义了一个API,每个应用程序利用相同的源代码就可以访问不同的数据库系统,存取多个数据库中的数据。和嵌入式数据库相比不涉及到数据库引擎。

2.ODBC的体系结构
ODBC为应用程序提供了一套CLI(调用层接口)函数和基于DLL(动态链接库)的运行支

持环境。在我们敲机房的时候,首先建立应用程序和数据库的连接,需要配置ODBC,就

是建立一个公共接口,连接数据库和存取这些数据库的底层操作是由驱动程序驱动数据

库完成的。对用户来说,ODBC驱动程序屏蔽掉了不同DBS的差异。

ODBC是分层体系结构,纵向四部分


应用程序(相当于咱们做的机房系统):调用ODBC函数,递交SQL语句给DBMS,检索出结果,并处理。应用程序要完成ODBC外部接口的所有工作   
  • 连接数据库
  • 想数据源发送SQL语句
  • 为SQL语句执行结果分配存储空间,定义所读取的数据格式
  • 读取结果
  • 处理错误
  • 向用户提交处理结果
  • 请求事务的提交和回退操作
  • 断开与数据源的连接   
驱动程序管理器:是一个动态链接库DLL,用于连接各种DBS的DBMS驱动程序,管理应用程序和DBMS驱动程序之

间的交互作用(通信)。
  •  为应用程序加载DBMS驱动程序
  • 检查ODBC调用参数的合法性和记录ODBC函数的调用
  • 为不同驱动程序的ODBC函数提供单一的入口
  • 调用正确的DBMS驱动程序
  • 提供驱动程序信息
当一个应用程序与多个数据库相连接时,为其提供不同的驱动程序,保证应用程序正确的调用这些DBS的DBMS,实现

数据访问,并把来自数据源的数据传送给应用程序。咱们做机房的时候,就用到了一个数据库,所以驱动程序的作用

不明显。

DB驱动程序:应用程序是不能直接存取数据库的,其各种操作请求要通过ODBC的驱动程序管理器提交给DBMS驱动

程序,通过驱动程序实现对数据源的各种操作,也就是说应用程序向数据源发送的SQL语句是用过这个驱动程序来提

交的,结果也是由驱动程序返回给应用程序的。应用程序是利用这个驱动程序所支持的函数来操作数据库的。驱动程

序也是一个DLL
  • 建立应用程序与数据源的连接
  • 向数据源提交用户请求执行的SQL语句
  • 根据应用程序的要求,讲发送给数据源的数据或从数据源返回的数据进行数据格式和类型转换
  • 把处理结果返回给应用程序
  • 将执行过程中的DBS返回的错误转换成ODBC定义的标准错误代码,并返回给应用程序
  • 根据需要定义和使用光标
ODBC的数据源管理:是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表达一个ODBC驱动程序和DBMS

特殊连接的命名。也就是说我们刚开始做系统的时候要配置ODBC那一步就是创建一个数据源(DSN),数据源分成

三类:用户DSN,系统DSN,文件DSN
  • 用户DSN用户创建的数据源,称为“用户数据源”。会把相应的配置信息保存在Windows的注册表中,此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。
  • 系统DSN:会把相应的配置信息保存在Windows的注册表中,所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。
  • 文件DSN:把具体的配置信息保存在硬盘上的某个具体文件中。文件DSN允许所有登录服务器的用户使用,而且即使在没有任何用户登录的情况下,也可以提供对数据库DSN的访问支持。




0 0