odbc和ado mysql_OLEDB和ODBC以及ADO解释

本文详细介绍了数据库接口的发展历程,从早期的API到ODBC、OLEDB,再到ADO,阐述了各自的作用和工作原理。通过实例展示了在ASP中使用ODBC和OLEDB连接SQL Server和Access数据库的连接字符串。最后提到了OLE DB对ODBC的兼容性,以及使用ODBC提供者可能带来的速度影响。
摘要由CSDN通过智能技术生成

===========================================================

OLEDB和ODBC以及ADO最形象的解释

作者:佚名    厚朴教育来源:本站原创    点击数:302    更新时间:2009-8-15

史前

那时候每个数据库供应商(其实也没几个)

都有自己的数据库操作API,

每个应用程序只能使用一个固定的数据库

想换数据库?没门!你要全部重新写

后来

X/OPEN和ISO(好像还有IBM)说

这么乱,程序员怎么活啊

于是提出了CLI(Call-Level Interface)

每个数据库的CLI(驱动程序)基本上相同,

程序员总算好过点了,可是要换数据库,

你写的程序需要重新编译(或许还要安装)

再后来

于是ODBC来了,它通过动态装载各个数据库的CLI

把函数调用转换成每个数据库的CLI调用

数据库应用程序总算和数据库供应商每什么关系了

再后来

MS提出了OLE,MS还有了自己的数据库

(Access/SQL Server)

MS是老大,这个问题上当然要有自己的看法

要是还只是提供ODBC,那多没面子

所以提出了 OleDb,它通过COM接口调用

OleDb也需要每个数据库提供一个CLI

(不过有了新名词,叫作Provider)

MS 给 Access和SqlServer分别写了一个Provider

不过为了照顾使用ODBC的,也提供了一个ODBC的Provider

这样那些只提供ODBC的数据库也可以通过OleDb访问

不过这样效率就稍微低了(因为要经过两层么)

所以现在有些数据库会提供自己的Provider

再后来

MS说OleDb的接口太复杂了

程序员也就调调QUERY

没必要搞这么复杂吧

于是提出了ADO,ADO 通过在OleDb上面封装

简化了使用方法,程序员在操作数据库上总算是解放了

新世纪终于到来了

MS也发明了.NET,为了适应新世纪新潮流

也提出了 ADO.NET

===========================================================

ODBC(开放数据库互连):是Microsoft引进的一种早期数据库接口技术。它实际上是ADO的前身。早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库.

OLEDB(对象链接和嵌入数据库)位于ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于OLEDB之上的"应用程序". 你的ADO调用先被送到OLEDB,然后再交由ODBC处理. 你可以直接连接到OLEDB层,如果你这么做了,你将看到服务器端游标(recordset的缺省的游标,也是最常用的游标)性能的提升.

用odbc连接数据库:

odbc中提供三种dsn,它们的区别很简单:用户dsn只能用于本用户。系统dsn和文件dsn的区别只在于连接信息的存放位置不同:系统dsn存放在odbc储存区里,而文件dsn则放在一个文本文件中。

它们的创建方法就不说了。

在asp中使用它们时,写法如下:

A.sql server:

用系统dsn: connstr="DSN=dsnname; UID=xx; PWD=xxx;DATABASE=dbname"

用文件dsn: connstr="FILEDSN=xx;UID=xx; PWD=xxx;DATABASE=dbname"

还可以用连接字符串(从而不用再建立dsn):

connstr="DRIVER={SQL SERVER};SERVER=servername;UID=xx;PWD=xxx"

B.access:

用系统dsn: connstr="DSN=dsnname"

(或者为:connstr="DSN=dsnname;UID=xx;PWD=xxx")

用文件dsn: connstr="FILEDSN=xx"

还可以用连接字符串(从而不用再建立dsn):

connstr="DRIVER={Microsoft Access Driver};DBQ=d:\abc\abc.mdb"

用oledb连接数据库:

A.sql server:

connstr="PROVIDER=SQLOLEDB;

DATA SOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname"

B.access:

connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0;

DATA SOURCE=c:\abc\abc.mdb"

值得注意的是,OLE DB对ODBC的兼容性,允许OLE DB访问现有的ODBC数据源。其优点很明显,由于ODBC相对OLE DB来说使用得更为普遍,因此可以获得的ODBC驱动程序相应地要比OLE DB的要多。这样不一定要得到OLE DB的驱动程序,就可以立即访问原有的数据系统。

提供者位于OLE DB层,而驱动程序位于ODBC层。如果想使用一个ODBC数据源,需要使用针对ODBC的OLE DB提供者,它会接着使用相应的ODBC驱动程序。如果不需要使用ODBC数据源,那么可以使用相应的OLE DB提供者,这些通常称为本地提供者(native provider)。

可以清楚地看出使用ODBC提供者意味着需要一个额外的层。因此,当访问相同的数据时,针对ODBC的OLE DB提供者可能会比本地的OLE DB提供者的速度慢一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值