在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. 2015-9-13 NOIP模拟赛解题报告(by hzwer)

    小奇挖矿 「题目背景」 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞过喵星系的n个星球. 「问题描述」 星球分为2类:资源型和维修型. 1.资源型:含矿物质量a[i ...

  2. 十九、Node.js-非阻塞IO、异步以及 '事件驱动EventEmitter'解决异步

    1.Nodejs 的单线程 非阻塞 I/O 事件驱动 在 Java.PHP 或者.net 等服务器端语言中,会为每一个客户端连接创建一个新的线程而每个线程需要耗费大约 2MB 内存.也就是说,理论上, ...

  3. join()函数

    注意:会报错 正确的:

  4. css3边角旋转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. BeginEditorCommand的原理

    代码来源 :http://www.arch-pub.com/problem-about-CPropertyPage_10682271.html CWnd* pAcadWnd = CWnd::FromH ...

  6. jqury表单验证

    结合天天生鲜的用户注册页面,学习验证表单js register.js--表单验证源码 $(function(){ var error_name = false; var error_password ...

  7. python 绘制抛物线

    %matplotlib inlineimport matplotlib.pyplot as plt import numpy as npx = range(100) y = [val**2 for v ...

  8. ubuntu 安装python3

    1.安装python3 apt-get install python3 2.安装pip3 apt-get install python3-pip 3.为python3添加包 pip3 install ...

  9. (C/C++) CRC8計算實現

    CRC計算通常會有分成 CRC8. CRC16. CRC12. CRC32. CRC8 = X^8 + X^2 + X + 1    0x07(0x107) CRC8 = X^8 + X^5 + X^ ...

  10. mysql5.1解压版安装

    1.如果已经安装别的版本先卸载干净,cmd管理员权限登录,mysql\bin目录:mysqld -remove 2.环境变量 MYSQL:path 3.my.ini [mysqld]port=3306 ...