OLE DB 提供程序模板 (C++)

OLE DB 是 Microsoft 通用数据访问策略的重要组成部分。 OLE DB 设计允许从任何数据源实现高性能的数据访问。 可以通过 OLE DB 查看任何表格数据,无论数据是否来自数据库。 这种灵活性为你提供了强大的功能。

OLE DB 使用者和提供程序中所述,OLE DB 将使用使用者和提供程序的概念。 使用者发出数据请求;提供程序向使用者返回表格格式的数据。 从编程的角度来看,此模型最重要的含义是提供程序必须实现使用者可以进行的任何调用。

什么是提供程序?

OLE DB 提供程序是一组 COM 对象,它们为来自使用者对象的接口调用提供服务,以表格格式将数据从持久源(称为数据存储)传输到使用者。

提供程序可以是简单的,也可以是复杂的。 提供程序可以支持最少的功能或通过实现更多接口来支持全面的生产质量提供程序。 提供程序可以返回表,使客户端能够确定该表的格式,并对该数据执行操作。

每个提供程序都实现了一组标准的 COM 对象来处理来自客户端的请求,这一标准意味着任何 OLE DB 使用者都可以访问来自任何提供程序的数据,无论使用什么语言(例如 C++ 和 Basic)。

每个 COM 对象都包含多个接口,其中一些接口是必需的,有一些则是可选的。 通过实现必需接口,提供程序保证任何客户端都应该能够使用的最低级别的功能(称为合规性)。 提供程序可以实现可选接口来提供额外的功能。 OLE DB 提供程序模板体系结构详细描述了这些接口。 客户端应始终调用 QueryInterface 以确定提供程序是否支持给定的接口。

OLE DB 规范级别支持

OLE DB 提供程序模板支持 OLE DB 2.7 版规范。 通过使用 OLE DB 提供程序模板,可以实现 0 级合规提供程序。 例如,Provider 示例使用模板来实现非 SQL (MS-DOS) 命令服务器,该服务器执行 DOS DIR 命令来查询文件系统。 Provider 示例返回行集中的目录信息,这是用于返回表格数据的标准 OLE DB 机制。

OLE DB 模板支持的最简单的提供程序类型是无命令的只读提供程序。 还支持带有命令的提供程序,以及书签和读/写功能。 可以通过编写其他代码来实现读/写提供程序。 当前版本不支持动态行集和事务,但如果需要,可以添加它们。

何时需要创建 OLE DB 提供程序?

并非总是需要创建自己的提供程序;Microsoft 在 Visual C++ 的“数据链接属性”对话框中提供了若干预打包的标准提供程序。 创建 OLE DB 提供程序的主要原因是利用通用数据访问策略。 下面列出了这样做的一些好处:

  • 通过任何语言(例如 C++、Basic 和 Visual Basic Scripting Edition)访问数据。 它使组织中不同的程序员能够以相同的方式访问同一数据,无论他们使用哪种语言。

  • 向其他数据源开放你的数据,例如 SQL Server、Excel 和 Access。 如果要在不同格式之间传输数据,这将非常有用。

  • 参与跨数据源(异类)操作。 这是数据仓库的有效方法。 通过使用 OLE DB 提供程序,可以以数据的本机格式保留数据,并且仍然能够在简单的操作中访问数据。

  • 向数据添加其他功能,例如查询处理。

  • 通过控制数据的操作方式来提高访问数据的性能。

  • 提高可靠性。 如果你有一种只有一名程序员可以访问的专有数据格式,你将面临风险。 通过使用 OLE DB 提供程序,可以将该专有格式向所有程序员公开。

只读提供程序和可更新提供程序

提供程序在复杂性和功能方面可能会大有不同。 将提供程序分类为只读提供程序和可更新提供程序非常有用:

  • Visual C++ 6.0 仅支持只读提供程序。 创建 OLE DB 提供程序讨论了如何创建只读提供程序。
  • Visual C++ 支持可更新提供程序,这些提供程序可以更新(写入)数据存储。 有关可更新提供程序的信息,请参阅创建可更新提供程序UpdatePV 示例是可更新提供程序的一个示例。

有关详细信息,请参阅:

另请参阅

数据访问
OLE DB SDK 文档
OLE DB 程序员参考