OLEDB和ODBC的区别是什么

62次阅读
没有评论

共计 3829 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 OLEDB 和 ODBC 的区别是什么,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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

关于 OLEDB 和 ODBC 的区别是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计3829字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)