在SSIS中,选择Connction Manager时,有很多的类型。其中会发现如下4个连接类型ODBC, OLEDB, ADO, ADO.NET。这4个东东到底是什么,他们有什么关联,什么区别,如何选择?

本文就他们的演化来解释这4个东东…

演变历史:

史前 => ODBC => OLEDB => ADO => ADO.NET

史前

最初,不同厂商的关系型数据库有着不同的调用接口(API),如SQL Server的DBLib,Oracle的OCI。那时开发人员必须使用不同的API来访问不同的数据库…

ODBC

1992年,为了解决史前的这个问题,以微软为首的行业参与者一起制定了ODBC(Open Database Connectivity),ODBC几乎能搞定所有的数据库系统。

ODBC是一个使用标准C开发的接口,用于访问数据库系统(DBMS)。ODBC设计旨在让它能独立于数据库系统和操作系统,不论使用何种数据库,应用程序都可以通过ODBC来进行数据访问。

不同的厂商为ODBC提供了各自的驱动,当需要更改数据库时,只需要更改驱动即可。

DAO

1992年底,DAO1.0发布。DAO(Data Access Object)数据访问对象。DAO可用于访问JET Database Engine数据库(Microsoft Access)和访问所有支持ODBC的数据库。最开始用于支持Microsoft Access。最终版本为DAO3.6,在64位操作系统上和2013的Microsoft Access中已经不再支持。

RDO

1995年,Microsoft发布了RDO(Remote Data Object)远程数据对象,最开始用于Windows 95上的VB应用程序。RDO以ODBC为基础,依赖ODBC API、选定的ODBC驱动程序以及后段数据库引擎实现了大部分的功能。包含了数据库连接、查询、存储过程、结果操作、改变提交。RDO具备基本的ODBC处理方法,所以可以直接执行大多数ODBC API函数。RDO是从DAO派生的,同DAO最大的不同在于其数据库处理模式。DAO是针对Records和Fields,而RDO是按照Rows和Columns来处理。也就是说DAO是ISAM模式,RDO是关系模式。此外DAO是访问Access的Jet引擎 (Jet是ISAM)的接口,而RDO则是访问ODBC的接口。可见,RDO是综合了DAO/Jet、ODBC等优点。RDO最终版本为2.0

OLEDB

1997年,Microsoft发布了OLEDB(Object Linking and Embedding, Database)对象链接嵌入数据库。OLEDB的产生号称用于取代ODBC(同时也兼容ODBC)。

OLEDB通过各种Provider与数据源发生关系(不同的数据源对应不同的Provider),除了数据库系统,OLEDB还能访问其他数据,如文本文件、电子邮件、Excel等…

Microsoft UDA(Universal Data Access通用数据访问)策略实质是数据可以存储于多种地方,通过统一的数据访问(OLEDB)可以实现各种数据源的访问。

ADO

1996年10月份,Microsoft发布了ADO(ActiveX Data Objects)活动数据对象。ADO实际上是OLEDB的一个“简化”版本。ADO Connection同时封装了OLE DB Data Source和OLE DB Seesion。ADO Command和Recordset分别封装了OLE DB的Command和Rowset。

ADO和OLEDB实际上是一个技术的两个方面。OLE DB通过COM接口提供数据的低级连接,而ADO提供一个对象模型,拥有更多的属性和方法,剪发应用程序中用OLE DB检索数据的过程。

ADO给OLE DB带来了简单性。OLE DB是面向调用的API,要使用OLE DB直接进行操作,就要按特定顺序进行许多不同的API调用。而ADO是面向对象的API,不用学习几百个API的调用,只需要了解操作几个对象即可。

Connection、Command、Error、Field、Parameter、Property、Record、Recordset、Stream

ADO.NET

2000年,微软的Microsoft .NET计划开始成形,许多的微软产品都冠上.NET的标签,ADO+也不例外,改名为ado.net并包装到.NET Framework类别库中。

ADO.NET已经成为.Net Framework基础类库的一部分,可以访问关系、非关系型数据。它是ADO技术的一个进化,现在已经被认可为一个新的产品/技术。

ODBC, OLEDB, ADO, ADO.NET的更多相关文章

  1. 【转载】ODBC, OLEDB, ADO, ADO.Net的演化简史

    原文:ODBC, OLEDB, ADO, ADO.Net的演化简史 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->ODBC->OLEDB->ADO->ADO.N ...

  2. [转帖]ODBC、OLEDB、ADO、ADO.NET

    一文详解ODBC.OLEDB.ADO.ADO.NET之间的关系 2019年01月16日 21:28:38 LoveMIss-Y 阅读数:66更多 所属专栏: 白话C#高级编程   版权声明:本文为博主 ...

  3. SQL那些事儿(十一)--ODBC,OLE-DB,ADO.NET区别[转]

    一.ODBC   ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂 ...

  4. ODBC, OLEDB, ADO, ADO.Net的演化简史

    ODBC, OLEDB, ADO, ADO.Net的演化简史 Copy&Paste了一下午,终于一蹴而就此文,嘿嘿... 1.演变历史 它们是按照这个时间先后的顺序逐步出现的,史前->O ...

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

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

  6. 数据库访问接口(ODBC,OLEDB,ADO)

    数据库访问接口发展历史 ODBC历史 ODBC(Open Database Connectivity,开放数据库互连).要了解ODBC是什么,先了解一下数据库连接的相关知识.在最开始连接数据库时,由于 ...

  7. (4.3)ODBC/OLE DB/ADO概念与使用情况

    一.ODBC   ODBC的由来 1992年Microsoft和Sybase.Digital共同制定了ODBC标准接口,以单一的ODBC API来存取各种不同的数据库.随后ODBC便获得了许多数据库厂 ...

  8. SSIS使用OleDB和Ado.Net两种方式调用 存储过程

    在使用”执行 SQL 任务“组件调用存储过程时,连接方式使用OleDB和Ado.Net稍有不同,结合图例说明一下 当我们使用OleDB时,设置的截图如下: 参数使用?来代替,Parameter Nam ...

  9. ODBC OLEDB

    ODBC  OLEDB https://www.cnblogs.com/dachuang/p/8615754.html

随机推荐

  1. MySQL数据库(二)

    1.模糊查询like 在where 后面使用like 通配符: % 任意字符 _ 单个字符 2.order by 排序 order by price //默认升序排序 order by price d ...

  2. MySQL不带where条件的UPDATE和DELETE 限制操作说明

    本文来自 网易云社区 . 数据安全是业务的基石,但是DBA 总会遇到救火情况,业务误删除全表或者误更新错全表业务数据,导致服务不可用 sql_safe_updates参数可以限制不带where条件的u ...

  3. cannot be resolved to a type (Java)

    最近经常遇到cannot be resolved to a type (Java)报错,以下为在网上找到的解决方案: 1.先看看有没有引用相关jar包2.检查jar是否引用了多个相同的,或者多个jar ...

  4. 「HNOI 2015」亚瑟王

    \(Description\) 有\(n\)张卡牌,每一张卡牌有\(p_i\)的概率发动,并造成\(d_i\)点伤害.一共有\(r\)轮,每一轮按照编号从小到大依次考虑,如果这张牌已经发动过则跳过该牌 ...

  5. input 实现onchange效果

    $(".selected input").on('input',function(e){ cc.search(); });

  6. [ 转 ] windows环境%变量%大全

    一.定义 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等.这点有点类似于DOS时期的默认路径,当你运行某些程序时除了在当前文件夹中寻找外,还会到设 ...

  7. (转)windows下VMware-workstation中安装CentOS

    windows下VMware-workstation中安装CentOS   windows下VMware-workstation中安装CentOS,可以分两部分,安装虚拟机和安装CentOS虚拟机.具 ...

  8. (一)使用appium之前为什么要安装nodejs???

    很多人在刚接触appium自动化时,可能会像我一样,按照教程搭建好环境后,却不知道使用appium之前为什么要用到node.js,nodejs到底和appium是什么关系,对nodejs也不是很了解, ...

  9. 【算法笔记】B1050 螺旋矩阵

    1050 螺旋矩阵 (25 分)   本题要求将给定的 N 个正整数按非递增的顺序,填入“螺旋矩阵”.所谓“螺旋矩阵”,是指从左上角第 1 个格子开始,按顺时针螺旋方向填充.要求矩阵的规模为 m 行  ...

  10. 为什么一定要学Go语言

    Go语言是谷歌2009发布的第二款开源编程语言.Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全.支持并行进程. 为什么要选择学习Go ...