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

u 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))

时间: 2024-09-12 03:59:00

OLEDB和ODBC的区别(优缺点)_数据库其它的相关文章

ADO,OLEDB,ODBC,DAO,RDO的区别说明_数据库其它

一 ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口).这些API利用SQL来完成其大部分任务.ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC. 二 DAO:数据访问对象是用来显露了Microsoft Jet数据库引擎(最早是给Mic

初学者来认识OLEDB和ODBC的区别

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

ASP中OLEDB和ODBC的区别

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

Access与sql server的语法区别总结_数据库其它

下边列出sql server与access的语法差别,方便更换程序数据库时查询. 日期分隔符号 access:英镑符(#) sql server:撇号(') Boolean 常量 access:True.False:On.Off:Yes.No:整数:-1(真).0(假). sql server:整数:1(真).0(假) 字符串连接 access:和号(&) sql server:加号(+) 通配符 access:星号(*)与零个或更多字符匹配.  问号(?)与单个字符匹配. 叹号(!)意味着不在

Redis和Memcache的区别总结_数据库其它

总结一: memcache官方定义 Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load. redis官方定义 Redis is an open source, BSD lic

SQL之left join、right join、inner join的区别浅析_数据库其它

今天和某朋友聊天,谈到他们公司的一个小问题.如下: 表A设备表,存储MAC地址,省份,城市,区. 表B软件表,存储MAC地址,软件名字. 功能是可以按省份,城市,或者区来查询软件列表. 你猜它现在如何做的? 它通过省份,城市,或者区取得MAC地址,然后查询B表用in查询. 这个很明显是不合理的,处理这种多对多的关系,为什么不用多表联查呢? 链表的方法常用的有3个: (inner) join 内部等值连接.left join 左连接 和 right join右连接. 有什么区别呢?怎么用呢? 下面

sqlserver和oracle中对datetime进行条件查询的一点区别小结_数据库其它

首先,看一下sql server,之前我们都通过前台用户选择一个起始时间和一个结束时间(以日为最小单位),然后来作为条件进行查询,如果直接通过"between starttime and endtime"来作为条件的话,发现会自动将"2009-06-17"转化为" 2009-06-17 00:00:00",于是如下查询条件" between '2009-06-16' and '2009-06-17'",只能得到16日的数据,1

SQL中IS NOT NULL与!=NULL的区别_数据库其它

平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS NOT NULL去做条件判断,因为SQL默认情况下对WHERE XX!= Null的判断会永远返回0行,却不会提示语法错误. 这是为什么呢? SQL Server文档中对Null值的比较运算定义了两种规则,如在SQL Server 2000中: 规则一是是ANSISQL(SQL-92)规定的Null

sqlserver、Mysql、Oracle三种数据库的优缺点总结_数据库其它

一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:为数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势.从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要.作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应用程序.为企业赢得核心竞争优势打开了胜利之门.作为重要的基准测试可伸缩性和速度奖的记录保持者,SQLServ