OLEDB和ODBC的区别(优缺点)

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

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-08-11 09:57:36

OLEDB和ODBC的区别(优缺点)的相关文章

OLEDB和ODBC的区别

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

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

史前    那时候每个数据库供应商(其实也没几个)    都有自己的数据库操作API,    每个应用程序只能使用一个固定的数据库    想换数据库?没门!你要全部重新写后来    X/OPEN和ISO(好像还有IBM)说    这么乱,程序员怎么活啊    于是提出了CLI(Call-Level Interface)    每个数据库的CLI(驱动程序)基本上相同,    程序员总算好过点了,可是要换数据库,    你写的程序需要重新编译(或许还要安装)再后来    于是ODBC来了,它通过动

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别 时间 2012-12-19 20:30:12  CSDN博客原文  http://blog.csdn.net/xifeijian/article/details/8333396 在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了 Provider 信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以

一起了解Hibernate与Mybatis的区别优缺点对比

hibernate与mybatis的区别优缺点对比 前言: 我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手. 第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用好Mybatis还是首先要先理解好Hi

Ajax 原理过程 同步与异步区别 优缺点

ajax原理过程                                                                                                                                        利用XMLHttpRequest对象发送简单请求的基本步骤:1)创建XMLHttpRequest对象实例2)设定XMLHttpRequest对象的回调函数,利用onreadystatechange属性3)设定请求

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别(转)

在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了Provider信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以下是一行连接串源代码: strConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strExcelFilePath & ";Extended Properties=Excel

浅谈sass与less区别优缺点

Sass是一种动态样式语言,Sass语法的缩排语法,比Css比多出很多功能,如变量,嵌套,运算,继承,颜色处理,函数等,易于阅读.Cass的安装需要安装Ruby环境,是服务器端处理的,Less是需要引入Less.js来处理代码输出css到浏览器,也可以在开发环节使用Less,然后编译成css文件,直接放在项目中,有less.app.SimpleLess.CodeKit.app这样的工具,也有在线编辑地址. 我偶然发现LESS之后我就开始坚定的使用它了.CSS本身对我来说从来不是问题,但是我很好奇

jdbc与odbc的区别,感悟,学习。。。

什么是JDBC? JDBC, 全称为Java DataBase Connectivity standard, 它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库.JDBC也是java核心类库的一部分. JDBC的最大特点是它独立于具体的关系数据库.与ODBC (Open Database Connectivity)类似, JDBC API 中定义了一些Java类分别用来表示与数据库的连接(connections), SQL语句(SQL statements), 结果集(res

JDBC 与ODBC的区别

一.ODBC(Open   DataBase   Connectivity   :  开放数据库连接)         ODBC  总体结构  应用程序    执行处理并调用odbc函数,提交sql语句并检索结果      Driver   Manager   管理应用程序和驱动程序之间的通讯,根据应用程序加载并卸载驱动程序,  处理odbc函数调用,获把它们传送到驱动程序     驱动程序        处理odbc函数调用,把sql语句提交到数据源,并返回结果到应用程序,如有必要,  驱动程