ODBC, OLEDB, ADO, ADO.NET

在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技术的一个进化,现在已经被认可为一个新的产品/技术。

posted @ 2016-09-19 17:55  Niko12230  阅读(486)  评论(0编辑  收藏  举报