OLE的意思是"对象链接嵌入"。而db是指 DataBase,也就是数据库的意思。整个意思就是指对象链接嵌入型的数据库软件。
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
有许多种办法可以连上一个数据库. 你可以用System DSN, DSN-less连接或是本地的OLEDB provider. OLEDB? 这是什么什么玩艺儿? 也许你们中的许多人以前没有听说过. 要回答这个问题,我们先得回顾一下数据库连接的历史.

早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解. 因此,能处理各种各样数据库的通用的API就应运而生了. 也就是现在的ODBC(Open Database Connectivity), ODBC是人们在创建通用API的早期产物. 有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库.
ODBC兼容的数据库包括Access, MS-SQL Server, Oracle, Informix等.

但ODBC并不是完美无缺的,它仍然含有大量的低级的调用,开发ODBC应用程序仍较困难. 开发
者不得不将大量的精力花在底层的数据库通信中,而不能专注于他们所要处理的数据. 后来微软提出了一个解决方案: DAO(Data Access Objects). DAO的代码看起来象这样:

objItem.AddNew
objItem.Name = "Chair"
objItem.Price = 10
objItem.Update

你也许看过DAO的代码. 后来DAO演变为RDO(Remote Data Objects, 为分布式数据库体系设计), 再后来是ADO. 尽管它们都有各自的不足之处. 根据微软的说法,"ODBC提供了本地SQL数据的存取,DAO提供了高级的数据对象". DAO和RDO都需要数据以SQL(Structured Query Language)的格式存储. 针对这些缺陷,微软提出了OLEDB,一个基于COM的数据存储对象,能提供对所有类型的数据的操作,甚至能在离线的情况下存取数据(比方说,你使用的是 你的便携机,你可以毫不费力地看到最后一次数据同步时的数据映像).

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

要想直接连到OLEDB层,你必须改变你的connection对象连接字符串. 先用老办法创建一个connectiong对象:

Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")

接下去,我们不用常规的类似DSN=pubs or DRIVER={MS SQL-
Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine的连接字符串,而采用下面的连接字符串:

objConn.ConnectionString = "Provider=ProviderName; Data
Source=DatabaseSource; Initial Catalog=DatabaseName; User ID=UserID;
Password=Password"

对于SQL:
ProviderName = SQLOLEDB
Data Source = Server Name
Initial Catalog = Database Name

对于Access:
ProviderName = Microsoft.Jet.OLEDB.3.51
Data Source = Full path to .MDB file

下面让我们来看两个例子,一个是针对Access的,还有一个是针对SQL的. 如果你的连接SQL的DSN-less连接串是这样的:


DRIVER={MS SQL-Server};UID=sa;PWD=;DATABASE=pubs;SERVER=myMachine

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=SQLOLEDB; Data Source=myMachine; Initial Catalog=pubs; User
ID=sa; Password=

让我们来看看Access,如果你的Access的连接字符串是:

DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=c:\inetpub\wwwroot\users.mdb

那么直接连接到OLEDB的连接字符串应该是这样的:

Provider=Microsoft.Jet.OLEDB.3.51; Data
Source=c:\inetpub\wwwroot\users.mdb

就是这么简单,挺棒的吧?

这很重要吗?
现在你也许对为什么要学习这种新的数据库连接方法感到有些儿迷惑,为什么不走标准的DSN-less/System DSN路子呢? 让我来告诉你为什么. 据Wrox出的ADO 2.0
Programmer's Reference一书中的测试,用OLEDB连接而不是DSN或DSN-less的连接会得到的性能提升如下:

性能比较
SQL Access
 OLEDB DSN OLEDB DSN
Connection Times: 18 82 Connection Times: 62 99
Iterating through 1,000 Records Times: 2900 5400 Iterating through
1,000 Records Times: 100 950


我希望这篇文章能对你有点儿帮助,我相信你会对你的连接SQL及Access数据库的方法做一些小小的改进的.
―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
主  题:
什么是ADO,ODBC,OLE DB,它们之间有什么关系?(总是对它们理解不透)
看了一些资料还是不太清楚,所以请大家给说说
回复人: julyclyde(ASP版社区之星) ( ) 信誉:144
2002-04-10 13:18:41Z
得分:0
?
ADO是一系列对象用于访问数据库的。各数据库操作方法一样
odbc和oledb都是底层系统,直接对数据库进行访问。对不同数据库操作方法不一样,对上层提供统一接口
Top
回复人: sayto(百发百中大力丸) ( ) 信誉:57
2002-04-10 13:57:26Z
得分:0
?
是否可以理解为它们都是一种数据访问技术,而ado比odbc和oledb要高级些?
既然ado对各数据库的操作方法一样,为什么"控制面板"中还要有"(odbc)数据源"的设置,而不提供ado
Top
回复人: sayto(百发百中大力丸) ( ) 信誉:57
2002-04-10 14:37:31Z
得分:0
?
是否可以理解为它们都是一种数据访问技术,而ado比odbc和oledb要高级些?
既然ado对各数据库的操作方法一样,为什么"控制面板"中还要有"(odbc)数据源"的设置,而不提供ado
Top
回复人: sayto(百发百中大力丸) ( ) 信誉:57
2002-04-10 15:29:48Z
得分:0
?
这么理解对不对?
Top
回复人: zzw922(JackZhang) ( ) 信誉:98
2002-04-10 15:59:53Z
得分:0
?
起初,出现的是odbc提供c的函数调用接口,定义了一组通用的数据库API,但速度比较慢,
ole db是微软的第三代组件结构,速度较odbc快,而ado是oledb的一个子集,是com组件,更快,更高校
Top
回复人: qiaoyu(随遇而安) ( ) 信誉:97
2002-04-10 16:56:32Z
得分:0
?
1.odbc,oledb,ado,adox的关系:
  odbc:  曾经的数据库通信标准
  oledb: 在一切对象化的趋势下,ms打算用它取代odbc.
        oledb分两种:直接的oledb和面向odbc的oledb,后者架构在odbc上,这样没有自己的oledb提供者的数据库也可以使用oledb的特点了。
  ado:  其实只是一个应用程序层次的界面,它用oledb来与数据库通信。
  adox:  对ado的安全性,维护性(如:创建一个数据库)进行了扩展。
2.用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"
3.用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"
4.使用UDL文件:
  UDL文件是用来存放数据库连接信息的一个文本文件,有点象文件DSN,不过UDL是针对OLEDB(直接的和面向ODBC的)的。
  UDL的创建方法:
    右击桌面或资源管理器-》新建-》microsoft数据连接
    其中的设置工作应该比较清楚了。
  UDL的用法:
    connstr="file name=e:\abc\abc.udl"
Top
回复人: julyclyde(ASP版社区之星) ( ) 信誉:144
2002-04-10 18:08:23Z
得分:0
?
ADO不是比ODBC和OLEDB高级些,而是高层些
Top
回复人: suifeng2002(随风) ( ) 信誉:100
2002-04-10 18:28:45Z
得分:0
?
初学会一种就够了,它们只不过是达到同一个目的的不同工具而已。。都弄懂反而会让你弄不清
Top

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。