OLEDB和ODBC的区别(优缺点)

http://www.jb51.net/article/31287.htm
ODBC是一种连接数据库的开放标准, OLEDB(对象链接和嵌入数据库)位于 ODBC层与应用程序之间. 在你的ASP页面里,ADO是位于 OLEDB之上的应用程序. 你的ADO调用先被送到 OLEDB,然后再交由 ODBC处理
 
 
ODBC是一种连接数据库的开放标准。 

ODBC(OpenDataBase Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows OpenServices Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。 ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给 ODBC。 
它本身就是为了是数据库的使用者不必考虑使用的是何种数据库而只需要相同的操作而设计的。 

ODBC是Open Database Connect即开放数据库互连的简称,它是由Microsoft 公司于1991 年提出的一个用于访问数据库的统一界面标准,是应用程序和数据库系统之间的中间件。它通过使用相应应用平台上和所需数据库对应的驱动程序与应用程序的交互来实现对数据库的操作,避免了在应用程序中直接调用与数据库相关的操作,从而提供了数据库的独立性。 
ODBC 主要由驱动程序和驱动程序管理器组成。驱动程序是一个用以支持 ODBC 函数调用的模块,每个驱动程序对应于相应的数据库,当应用程序从基于一个数据库系统移植到另一个时,只需更改应用程序中由 ODBC 管理程序设定的与相应数据库系统对应的别名即可。驱动程序管理器可链接到所有 ODBC 应用程序中,它负责管理应用程序中 ODBC 函数与DLL 中函数的绑定。 
ODBC 使用层次的方法来管理数据库,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地方, ODBC 都引入一个公共接口以解决潜在的不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是 ODBC 一经推出就获得巨大成功的重要原因之一。 

从结构上分,ODBC 分为单束式和多束式两类。 

1.单束式驱动程序 

单束式驱动程序介于应用程序和数据库之间,像中介驱动程序一样数据提供一个统一的数据访问方式。当用户进行数据库操作时,应用程序传递一个 ODBC 函数调用给 ODBC 驱动程序管理器,由 ODBC API 判断该调用是由它直接处理并将结果返回还是送交驱动程序执行并将结果返回。由上可见,单束式驱动程序本身是一个数据库引擎,由它直接可完成对数据库的操作,尽管该数据库可能位于网络的任何地方。 

2.多束式驱动程序 

多束式驱动程序负责在数据库引擎和客户应用程序之间传送命令和数据,它本身并不执行数据处理操作而用于远程操作的网络通信协议的一个界面。前端应用程序提出对数据库处理的请求,该请求转给 ODBC 驱动程序管理器,驱动程序管理器依据请求的情况,就地完成或传给多束驱动程序,多束式驱动程序将请求翻译为特定厂家的数据库通信接口(如Oracle 的SQLNet)所能理解的形式并交于接口去处理,接口把请求经网络传送给服务器上的数据引擎,服务器处理完后把结果发回给数据库通信接口,数据库接口将结果传给多束式 ODBC 驱动程序,再由驱动程序将结果传给应用程序。 

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

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

参考 http://www.connectionstrings.com/ 

odbc连接数据库: 

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

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

1.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={SQLSERVER};SERVER=servername;UID=xx;PWD=xxx" 

2.access: 

用系统dsn: connstr="DSN=dsnname" 
(或者为:connstr="DSN=dsnname;UID=xx;PWD=xxx") 
用文件dsn:connstr="FILEDSN=xx" 
还可以用连接字符串(从而不用再建立dsn): 
connstr="DRIVER={MicrosoftAccess Driver};DBQ=d:\abc\abc.mdb" 

oledb连接数据库: 

1.sql server: 
connstr="PROVIDER=SQLOLEDB; 
DATASOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname" 

2.access: 
connstr="PROVICER=MICROSOFT.JET. OLEDB.4.0; 
DATASOURCE=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提供者可能会比本地的 OLEDB提供者的速度慢一些。 

ODBC,OLEDB连接字符串详解 

SQL Server 

ODBC 
1. Standard Security: 
"Driver={SQLServer};Server=Aron1;Database=pubs;Uid=sa;Pwd=asdasd;" 
2. Trusted connection: 
"Driver={SQLServer};Server=Aron1;Database=pubs;Trusted_Connection=yes;" 
3. Prompt for username and password: 
oConn.Properties("Prompt")= adPromptAlways 
oConn.Open"Driver={SQL Server};Server=Aron1;DataBase=pubs;" 

u OLE DB, OleDbConnection (.NET) 

1. Standard Security: 
"Provider=sqloledb;DataSource=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;" 
2. Trusted Connection: 
"Provider=sqloledb;DataSource=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;" 
(useserverName\instanceName as Data Source to use an specifik SQLServer instance,only SQLServer2000) 
3. Prompt for username and password: 
oConn.Provider= "sqloledb" 
oConn.Properties("Prompt")= adPromptAlways 
oConn.Open"Data Source=Aron1;Initial Catalog=pubs;" 
4. Connect via an IP address: 
"Provider=sqloledb;DataSource=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;UserID=sa;Password=asdasd;" 
(DBMSSOCN=TCP/IPinstead of Named Pipes, at the end of the Data Source is the port to use (1433is the default)) 

u SqlConnection (.NET) 

1. Standard Security: 
"DataSource=Aron1;Initial Catalog=pubs;User Id=sa;Password=asdasd;" 
- or - 
"Server=Aron1;Database=pubs;UserID=sa;Password=asdasd;Trusted_Connection=False" 
(bothconnection strings produces the same result) 
2. Trusted Connection: 
"DataSource=Aron1;Initial Catalog=pubs;Integrated Security=SSPI;" 
- or - 
"Server=Aron1;Database=pubs;Trusted_Connection=True;" 
(bothconnection strings produces the same result) 
(useserverName\instanceName as Data Source to use an specifik SQLServer instance,only SQLServer2000) 
3. Connect via an IP address: 
"DataSource=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=pubs;UserID=sa;Password=asdasd;" 
(DBMSSOCN=TCP/IPinstead of Named Pipes, at the end of the Data Source is the port to use (1433is the default))
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值