我正在读一MS Excel帮助条约和数据透视表缓存不知道他们是什么意思的 OLE DB和ODBC源

...你应该使用CommandText 财产,而不是SQL财产, 现在存在主要是为 兼容性早期版本的 Microsoft Excel。如果你使用 属性,CommandText酒店的 值优先。

对于 OLE DB源, ,该数据库相连的连接 酒店描述了价值 CommandText财产。

对于 ODBC源, ,CommandText 财产的职能完全一样的 SQL财产,并且设定的酒店 原因的数据刷新...

我真的很感谢你的短答案。

有帮助吗?

解决方案

根据 ADO:件的数据对象, 一书通过杰森-T.特殊,published by O'Reilly媒体在2001年 (优秀图在这里)时,他说正是什么MOZILLA说。

(直接从7页的那本书)

  • ODBC提供了访问,只要关系数据库
  • OLE DB提供了下列功能
    • 对数据的访问无论其形式或位置
    • 完全进入的数据来源和ODBC drivers

所以这似乎是OLE DB与基于SQL数据源通过ODBC driver层。

alt text

我不是100%确信这个形象是正确的。 两个连,我不肯定是ADO.NET 通过ADO C-api和OLE DB通过ODBC SQL数据来源(因为在 这个图 提交人并没有把OLE DB的访问通过ODBC,我认为这是一个错误).

其他提示

ODBC: - 仅适用于关系数据库(Sql Server,Oracle等)

OLE DB: - 适用于关系数据库和非关系数据库。 (Oracle,Sql-Server,Excel,原始文件等)

这是我的理解(非权威):

ODBC是大多数软件供应商支持的技术无关的开放标准。 OLEDB是来自COM时代的技术特定 Microsoft的API(COM是.NET之前的组件和互操作技术)

在某些时候,愿意与Microsoft数据消费者兼容的各种数据供应商(例如Oracle等)为其产品开发了OLEDB提供商,但在大多数情况下OLEDB仍然是仅限Microsoft的标准。现在,大多数 Microsoft 数据源允许ODBC和OLEDB访问,主要是为了与旧版ODBC数据使用者兼容。此外,还存在用于ODBC的OLEDB提供程序(包装器),如果有人愿意,它允许使用OLEDB访问ODBC数据源。

就功能而言,OLEDB比ODBC更丰富,但却遭受一环一环统治(过于通用,过于复杂,无意见)。

在非Microsoft世界中,基于ODBC的数据提供程序和客户端被广泛使用,而不是去任何地方。

微软泡泡OLEDB正逐步淘汰,有利于构建在该数据源的本机传输层之上的本机.NET API(例如,MS SQL Server的TDS)。

ODBC和OLE DB是两种竞争数据访问技术。特别是关于SQL Server,微软已将它们作为首选未来方向推广 - 尽管在不同的时间。

ODBC

ODBC是一种行业范围的标准接口,用于访问类似表的数据。它主要是为数据库开发的,并在记录集合中呈现数据,每个记录集合成一组字段。每个字段都有自己的数据类型,适合其包含的数据类型。 每个数据库供应商(Microsoft,Oracle,Postgres,…)都为其数据库提供ODBC驱动程序。

还有用于对象的ODBC驱动程序,尽管它们不是数据库表,但它们非常相似,因此以相同的方式访问数据非常有用。例如电子表格,CSV文件和列式报告。

OLE DB

OLE DB是一种用于访问数据的Microsoft技术。与ODBC不同,它包含类似于表格的数据和非类似表格的数据,例如电子邮件,网页,Word文档和文件目录。但是,它是面向过程而不是面向对象的,并且被认为是开发数据源访问的一个相当困难的接口。为了解决这个问题,ADO被设计成一个位于OLE DB之上的面向对象层,并提供更简单,更高级别的–虽然仍然非常强大–使用它的方式。 ADO的一大优势在于,您可以使用它来操作特定于给定类型数据源的属性,就像使用它来访问适用于所有数据源类型的属性一样容易。你并不局限于一些令人不满意的最低共同标准。

虽然所有数据库都有ODBC驱动程序,但它们都没有OLE DB驱动程序。但是,如果要以类似OLE DB的方式访问它们,则可以使用OLE和ODBC之间的接口。此接口称为MSDASQL(用于ODBC的Microsoft OLE DB提供程序)。

SQL Server数据访问技术

由于SQL Server是(1)由Microsoft制作,(2) Microsoft数据库平台,因此ODBC和OLE DB都非常适合它。

ODBC

由于所有其他数据库平台都有ODBC接口,因此Microsoft显然必须为SQL Server提供一个。除此之外,DAO(Microsoft Access中的原始默认技术)使用ODBC作为与所有外部数据源通信的标准方式。这使得ODBC接口成为必要条件。 与SQL Server 2000一起发布的SQL Server版本6 ODBC驱动程序仍然存在。已发布更新版本以处理随后发布的新数据类型,连接技术,加密,HA / DR等。截至09/07/2018,最新版本是v13.1“用于SQL Server的ODBC驱动程序”,于23/03/2018发布。

OLE DB

这是微软自己的技术,他们从2002年左右开始大力推广这项技术。– 2005年,以及随附的ADO层。他们显然希望它将成为首选的数据访问技术。 (他们甚至将ADO作为访问Access 2002/2003中数据的默认方法。)然而,最终很明显,这种情况不会发生,原因如下:

  1. 世界不会转变为微软技术和 远离ODBC;
  2. DAO / ODBC比ADO / OLE DB快,并且也完全集成到MS Access中,因此不会自然死亡;
  3. Microsoft正在开发的新技术,特别是ADO.NET, 也可以直接与ODBC对话。 ADO.NET可以直接与OLE对话 DB也是如此(因此将ADO留在回水中),但它不是(不像 ADO)完全依赖它。
  4. 由于这些原因

在非常基础的层面上,这些只是不同数据源(即数据库)的不同API。 OLE DB更新,可以说更好。

您可以在维基百科上阅读更多内容:

  1. OLE DB
  2. ODBC
  3. 即。您可以使用ODBC驱动程序或OLE DB驱动程序连接到同一数据库。在这些情况下,数据库行为的差异就是您的书所指的。

两者都是数据提供者(您的代码将用于与数据源通信的API)。 1998年推出的Oledb旨在取代ODBC(1992年推出)

• 2011年8月:Microsoft 弃用 OLE DB( Microsoft正在与ODBC协调以进行本机关系数据访问

• 2017年10月:Microsoft undeprecates OLE DB(宣布新版本的SQL Server OLE DB驱动程序

ODBC仅适用于关系数据库,不适用于非关系数据库,例如Ms Excel文件。奥莱布可以做任何事情。

要知道M $为什么会发明OLEDB,你无法将OLEDB与ODBC进行比较。相反,您应该将OLEDB与DAO,RDO或ADO进行比较。后者很大程度上依赖于SQL。但是,OLEDB依赖于COM。但ODBC已存在多年,因此有一个OLEDB-ODBC桥来解决这个问题。当M $发明OLEDB时,我认为有一幅大图。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top