关闭

ado

688人阅读 评论(0) 收藏 举报

刚接触到数据库方面的知识,收录一点网上的文章,慢慢看.

微软公司的ADO (ActiveX Data Objects) 是一个用于存取数据源的COM组件。它提供了编程语言和统一数据访问方式OLE DB的一个中间层。允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。访问数据库的时候,关于SQL的知识不是必要的,但是特定数据库支持的SQL命令仍可以通过ADO中的命令对象来执行。

ADO被设计来继承微软早期的数据访问对象层,包括RDO (Remote Data Objects) 和DAO(Data Access Objects)。ADO在1996年冬被发布 引自:http://zhidao.baidu.com/question/28592178.html

DAO /RDO 是早期MS针对ACCESS/Remote Data Access 的数据组件,后有一定的扩展,但移植/性能均不理想.

OLE DB 是MS 用来取代 使用 ODBC API 方问数据 所设计的一个工业标准组件,扩展性极好
因为是基于COM的所以移植性极好,又因为是针对C/C++的,所以性能极佳
但是也是骂声最多的,因为是面对C/C++程序员的,其它语言基本不可用.
而C/C++程序员又觉得太鸡零狗碎,文档太过简单太晦涩难懂.

所以为了易用和面向所有成员.
开发了ADO.
ADO是基于OLE DB Consume 的,同时又在客户端实现的IASM的光标集,使用变得很方便.
所以最终MS在数据方问上又赢了(谁的用户多,谁就可能成为标准,谁成为标准,谁就可以向别人收费)
所以现在只听说有OLEDB,ADO,再也听不到谈论数据网关之类的东东了. 
引自: http://www.it130.cn/Article/FAQ/bianchengyuyan/VC-MFC/2007-3-6/2007030608272600.html

1. ADO与ADO.NET简介
ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用于建立基于客户端/服务器和 Web 的应用程序的主要功能。但是ADO使用OLE DB接口并基于微软的COM技术,而ADO.NET拥有自己的ADO.NET接口并且基于微软的.NET体系架构。众所周知.NET体系不同于COM体系,ADO.NET接口也就完全不同于ADO和OLE DB接口,这也就是说ADO.NET和ADO是两种数据访问方式。

2. 数据访问方式的历史
下面简单的回顾一下微软的数据访问方式所走过的几个阶段。
ODBC – (Open Database Connectivity)是第一个使用SQL访问不同关系数据库的数据访问技术。使用ODBC应用程序能够通过单一的命令操纵不同的数据库,而开发人员需要做的仅仅只是针对不同的应用加入相应的ODBC驱动。
DAO - (Data Access Objects)不像ODBC那样是面向C/C++程序员的,它是微软提供给Visual Basic开发人员的一种简单的数据访问方法,用于操纵Access数据库。
RDO – 在使用DAO访问不同的关系型数据库的时候,Jet引擎不得不在DAO和ODBC之间进行命令的转化,导致了性能的下降,而RDO(Remote Data Objects)的出现就顺理成章了。
OLE DB – 随着越来越多的数据以非关系型格式存储,需要一种新的架构来提供这种应用和数据源之间的无缝连接,基于COM(Component Object Model)的OLE DB应运而生了。
ADO – 基于OLE DB之上的ADO更简单、更高级、更适合Visual Basic程序员,同时消除了OLE DB的多种弊端,取而代之是微软技术发展的趋势。

. ADO与ADO.NET对照
在开始设计.NET体系架构时,微软就决定重新设计数据访问模型,以便能够完全的基于XML和离线计算模型。两者的区别主要有:
ADO以Recordset存储,而ADO.NET则以DataSet表示。Recordset看起来更像单表,如果让Recordset以多表的方式表示就必须在SQL中进行多表连接。反之,DataSet可以是多个表的集合。ADO 的运作是一种在线方式,这意味着不论是浏览或更新数据都必须是实时的。ADO.NET则使用离线方式,在访问数据的时候ADO.NET会利用XML制作数据的一份幅本,ADO.NET的数据库连接也只有在这段时间需要在线。
由于ADO使用COM技术,这就要求所使用的数据类型必须符合COM规范,而ADO.NET基于XML格式,数据类型更为丰富并且不需要再做COM编排导致的数据类型转换,从而提高了整体性能

引自:http://www.itpub.net/249376.html

OLE DB 是什么,它为何不同于其他数据库技术?OLE DB 是 Microsoft 开发的一种高性能的、基于 COM 的数据库技术。OLE DB 和其他 Microsoft 数据库技术的不同之处在于其提供通用数据访问的方式。

通用数据访问

通用数据访问提供一种统一的数据访问方式,不管数据是以何种形式存储。在通常的业务中,有大量的信息存储在公司的数据库之外。这些信息分散在各处,例如各种不同的文件系统(如 FAT 或 NTFS)、索引顺序文件、个人数据库(如 Access)、电子表格(如 Excel)、项目规划应用程序(如 Project)以及电子邮件(如 Outlook)中。

使用多种相关联的应用程序来访问这些数据成为工作中的主要瓶颈,或者至少是一件很麻烦的事情。大多数公司都发现自身面临这种情况,他们通过将信息合并到一个数据库管理系统 (DBMS) 来解决此问题。但是,这种解决方案不仅昂贵、耗时,而且在许多情况下并不可行。

另一种解决方案就是开发通用数据访问。OLE DB 和 ADO 提供通用数据访问功能。在这两者中,OLE DB 的性能更强一些,并且被推荐和 Visual C++ 应用程序一起使用。

通用数据访问意味着两项功能:其一是分布式查询或统一访问多个(分布式)数据源功能;其二是能够使非 DBMS 数据源可由数据库应用程序访问。

  • 分布式查询

    统一访问多(即,分布式)数据源中的数据的能力。数据源既可以是同一类型,例如两个单独的 Access 数据库;也可以是不同的类型,例如一个 SQL Server 数据库和一个 Access 数据库。“统一”表示可以有目的地对所有数据源运行相同的查询。

  • 非 DBMS 访问

    让非 DBMS 数据源能为数据库应用程序所访问的能力。DBMS 数据源的例子有 IMS、DB2、Oracle、SQL Server、Access 以及 Paradox 等。非 DBMS 数据源的示例包括文件系统、电子邮件、电子表格和项目管理工具中的信息。

请看这样一种情况:销售部门需要查找一周中来自某一地区的客户的所有电子邮件。该查询可能需要对电子邮件应用程序的邮箱文件和客户的 Access 表进行搜索,以确认客户的名字。其中,Access 是一个 DBMS 应用程序,而 Outlook 是非 DBMS 应用程序。

OLE DB 支持开发能访问各种数据源的应用程序,无论是 DBMS 还是非 DBMS 数据源。OLE DB 通过使用支持某一给定数据源相应的 DBMS 功能的 COM 接口,使得对数据源的通用访问成为可能。COM 不仅在数据源之间而且还在其他各种应用程序之间减少了不必要的服务重复,同时还使它们之间的交互操作达到最大限度。

COM 的优点

这是 COM 产生的原因。OLE DB 是一组 COM 接口。用户可通过一组统一的接口访问数据,从而把一个数据库组织成一个合作组件的基地。

基于 COM 规范,OLE DB 定义了一批可扩展并且可以维护的接口,这些接口代管并封装 DBMS 功能中一致、可重复使用的部分。这些接口定义了 DBMS 组件的边界,例如行容器、查询处理器和事务处理协调器,使用这些组件可对各种信息源进行统一事务访问。

OLE DB 应用程序通常写作 DLL,但是其 COM 实现通过使用组件化代码克服了 DLL 的缺陷(例如命名和版本问题)。在 OLE DB 中,可使用全局唯一标识符 (GUID) 来调用接口或者访问其他组件。

最后一点,COM 使用引用计数来保持对组件使用的跟踪。调用接口方法时,引用计数递增;方法返回时,引用计数递减。当计数等于零时,该方法所属的组件被释放。

引自:msdn

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23661次
    • 积分:318
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:9篇
    • 译文:0篇
    • 评论:1条