zoukankan      html  css  js  c++  java
  • 2.7_Database Interface OLE-DB诞生

    ODBC仅支持关系数据库,以及传统的数据库类型,并且只以C/C++语言API(API就是一些C语言的代码,是最底层的程序,在windows中就是一些.dll的文件)形式提供服务,因而无法符合日渐复杂的数据存取应用,也无法让脚本语言使用。对于后来的Excel等根本不支持!

    现今的应用程序很可能需要从不同的数据源取得数据,加以处理,再把处理过的数据输出到另外一个数据源中。随着数据源日益复杂化,数据源可能不是传统的关系数据库.而可能是Excel文件、Email、Internet/Intranet上的电子签名信息。

    Microsoft在1997年提出了OLE-DB(Object Link embed,对象连接与嵌入)架构,定义了统一的COM接口作为存取各类不同的数据源的标准,并且封装在一组COM对象之中,协助程序员存取企业中各类不同的数据源。如下图;

    使用者和提供者都是COM对象,并能够通过一套COM接口互相通信。这种基于COM的通信可被概括为抽象对象(如DataSource/Session/Command和Rowset)上执行的操作。

    在OLE DB中,采用C++的概念进行设计,将不会有ODBC体系的drive API(C语言)的概念,取而代之的是提供者(provider)的概念。

      OLE DB标准的具体实现是一组C++  API函数,就像ODBC标准的ODBC API一样,不同的是,OLE DB的API是符合COM标准、基于对象的(而ODBC API则是简单的C语言API,面向过程的)。

    OLEDB和ODBC的相互关系

      1.由于OLE DB和ODBC标准都是为了提供统一的访问数据接口,所以曾经有人疑惑:OLE DB 是不是替代ODBC的新标准?

    答案是否定的。

    实际上,ODBC标准的对象是基于SQL的数据源(SQL-Based Data Source),而OLE DB的对象则是范围更为广泛的任何数据存储。

    现在,微软自己已经为所有的ODBC数据源提供了一个统一的OLE DB服务程序,叫做ODBC OLE DB Provider.

    2.ODBC OLE DB Provider发布之后,有人担心:ODBC OLE DB Provider是不是在ODBC之上的层次(Layer)?

    答案也是否定的。

    实际上,从图看出,ODBC OLE DB Provider 的作用,是替换ODBC Driver Manager,作为应用程序与ODBC驱动程序之间的桥梁,理论上不会增加任何开销。  

  • 相关阅读:
    【LeetCode】-- 73. Set Matrix Zeroes
    (第三场) A PACM Team 【dp,五维背包】
    POJ 1745 【0/1 背包】
    (第三场) H Diff-prime Pairs 【数论-素数线性筛法+YY】
    POJ 2299 【树状数组 离散化】
    树状数组 && 线段树应用 -- 求逆序数
    HDU 1698 【线段树,区间修改 + 维护区间和】
    HDU 1166 【线段树 || 树状数组,单点修改 维护区间和】
    (第二场)D Money 【dp贪心】
    (第二场)A Run 【动态规划】
  • 原文地址:https://www.cnblogs.com/ximi07/p/11237591.html
Copyright © 2011-2022 走看看