一、无ODBC时代

一般来讲不同的数据库厂商都有自己的数据库开发包,这些开发包支持两种模式的数据库开发;

1.预编译的嵌入模式(例如Oracle的ProC,SQL Server的ESQL)

2.API调用(例如Oracle的OCI)

预编译的嵌入模式:所有的SQL语句要写在程序内部,并遵守一定的规则,然后由数据库厂商的预编译工具处理后形成C代码,最后由C编译器进行编译

API调用:数据库厂商提供了开发包,你通过各种API函数就可以连接数据库,执行查询、修改、删除、操纵光标,执行存储过程

两者的对比:预编译的缺点就在于无法生成动态的SQL语句;API调用给程序更多自由,但只能针对同一种数据库。

从上图中看出,那些相对独立的软件供应商而言,经常要为每一个DBMS编写一个版本的应用程序(比如,针对数据库1的版本、数据库2的版本、数据库3的版本...)同时,多种数据库之间的互连访问成为一个突出的问题!

为解决这个问题,由三十多家著名的软件公司组成了一个组织,这个组织的目的是定义执行SQL的共同基础,以使其成员的产品都可以使用它来彼此交流数据。

二、ODBC时代  ---  DBMS(数据库管理系统)

在1994年,微软发布了针对Windows操作系统设计,实现上述标准的“这个产品”,并将这个产品正式成为开放数据库连接(Open Data Base Connection),即ODBC。基本思想如下图:

传统方式对比。如下图

图中,应用程序1、2、3采用公共接口API进行访问的,如下图所示:

如上图简化了开发维护难度,应用程序的目标代码能使用于不同的DBMS,把应用程序与底层网络环境和DBMS分开,ODBC开放驱动程序管理模块,来接纳各个DBMS供应商(ORACLE、SYBASE、DB2等)提供符合ODBC规范标准的驱动程序,结构如下图:

2.2_Database Interface:ODBC基本概念的更多相关文章

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

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

  2. 转:Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念

    Cocoa 是在Mac OS X系统上原生的一个编译环境.他包含两个框架,其实就是一系列的类库,Foundation和AppKit. 在你的iPhone等掌上设备上,使用的则是他的一个子类 - Coc ...

  3. Cocoa、Foundation、UIKit、Objective-c、XCode、Interface Builder的概念

    转自:http://blog.csdn.net/hou_cocoa/article/details/6187418 Cocoa 是在Mac OS X系统上原生的一个编译环境.他包含两个框架,其实就是一 ...

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

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

  5. 2.3_Database Interface ODBC组成原理

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

  6. J2EE之13个规范标准概念

    主要是关于j2EE十三个规范的总结. java基础知识 首先java分为三类:J2ME.J2SE.J2EE. 依据开发软件的大小和量级他们的作用分别不同,J2ME是开发为机顶盒.移动电话和PDA之类嵌 ...

  7. 面向对象编程语言中的接口(Interface)

    在大多面向对象的编程语言中都提供了Interface(接口)的概念.如果你事先学过这个概念,那么在谈到“接口测试”时,会不会想起这个概念来!?本篇文章简单介绍一下面向对象编程语言中的Interface ...

  8. python:面向对象编程之Zope.interface安装使用

    持续学习python+django中... 一.接口简述 在我们所熟知的面向对象编程语言中,大多提供了接口(interface)的概念.接口在编程语言中指的是一个抽象类型,是抽象方法的集合:它的特点如 ...

  9. ODBC、OLEDB、ADO、SQL的关系

    对于一个刚接触数据库的菜鸟来说(比如我),总是搞不清SQL.ADO.OLE DB.ODBC,大脑中一片混乱,好像懂了,又好像没懂,非常的苦恼,今天下了点功夫研究了一下,贴出来,其中肯定有好多错误,希望 ...

随机推荐

  1. python学习笔记二:(python3 logging函数中format说明)

    背景,在学习logging时总是遇到无法理解的问题,总结,尝试一下更清晰明了了,让我们开始吧! logging模块常用format格式说明 %(levelno)s: 打印日志级别的数值 %(level ...

  2. 集合类 collection接口 ArrayList

    数组: 存储同一种数据类型的集合容器.数组的特点:1. 只能存储同一种数据类型的数据.2. 一旦初始化,长度固定. 3. 数组中的元素与元素之间的内存地址是连续的. : Object类型的数组可以存储 ...

  3. 给lol人物模型添加动画库(mixamo)中的动画

    参考链接:https://www.bilibili.com/video/av61771773/?p=4   作为一个懒人,给提取出来的lol人物模型亲手制作动画是不存在的,但是又想给人物模型应用新的有 ...

  4. CS224n学习笔记(三)

    语言模型 对于一个文本中出现的单词 \(w_i\) 的概率,他更多的依靠的是前 \(n\) 个单词,而不是这句话中前面所有的单词. \[ P\left(w_{1}, \ldots, w_{m}\rig ...

  5. layui的layer.open()方法查看缩略图 原图缩放

    写在前面 需求是页面上的图片缩略图, 鼠标悬浮时显示原图片, 并按比例缩放. 操作步骤 官方文档 点击跳转 关键属性 1. type: 设置type=1, 以页面的形式展示图片 2.  content ...

  6. pip install --upgrade urllib3==1.25.2

    pip install --upgrade urllib3==1.25.2 pip 安装,更新模块   moudle_name:是对应的模块名:请自行更换为自己需要更新的模块名 查看所有可更新的模块: ...

  7. asp.net core 获取appsettings.json里的配置

    public GoodsController(IConfiguration configuration) { Configuration = configuration; UpFileDir = Co ...

  8. Oracle系列七 子查询

    子查询语法 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM table); 子查询 (内查询) 在 ...

  9. (转)scipy详解

    原文:https://www.cnblogs.com/ws0751/p/8361353.html#top 登月图片消噪   scipy.fftpack模块用来计算快速傅里叶变换速度比传统傅里叶变换更快 ...

  10. win10无法运行phantomjs

    @参考文章 echarts利用phantomjs将 图片保存到电脑,在win7下好好的,在win10下报错: 'phantomjs' 不是内部或外部命令,也不是可运行的程序或批处理文件. 在win7下 ...