什么是 ODBC?

计算机领域存在许多关于 ODBC 的误解。 对于最终用户来说,其是 Microsoft Windows 控制面板中的图标。 对于应用程序程序员来说,其是一个包含数据访问例程的库。 对许多其他人来说,这是所有数据库访问问题的理想答案。

首先,ODBC 是数据库 API 的规范。 此 API 独立于任何 DBMS 或操作系统;虽然此手册使用 C 语言,但 ODBC API 与语言无关。 ODBC API 基于 Open Group 和 ISO/IEC 中的 CLI 规范。 ODBC 3.x 完全实现了这两个规范(早期版本的 ODBC 基于这些规范的初步版本,但没有完全实现),并添加了基于屏幕的数据库应用程序开发人员常用的功能,例如可滚动游标。

ODBC API 中的函数由特定于 DBMS 的驱动程序的开发人员实现。 应用程序调用这些驱动程序中的函数以独立于 DBMS 的方式访问数据。 驱动程序管理器用于管理应用程序和驱动程序之间的通信。

尽管 Microsoft 为运行 Microsoft Windows 95 及更高版本的计算机提供了驱动程序管理器,编写了多个 ODBC 驱动程序,并从其某些应用程序调用 ODBC 函数,但任何人都可以编写 ODBC 应用程序和驱动程序。 事实上,目前可用的绝大多数 ODBC 应用程序和驱动程序由 Microsoft 以外的公司编写。 此外,ODBC 驱动程序和应用程序存在于 macOS 和各种 UNIX 平台上。

为了帮助应用程序和驱动程序开发人员,Microsoft 为运行 Windows 95 及更高版本的计算机提供了 ODBC 软件开发工具包 (SDK),此工具包提供驱动程序管理器、安装程序 DLL、测试工具和示例应用程序。 Microsoft 已与 Visigenic Software 达成合作,将这些 SDK 移植到 Macintosh 和各种 UNIX 平台。

重要的是要了解 ODBC 旨在公开数据库功能,而不是补充这些功能。 因此,应用程序编写人员不应期望使用 ODBC 突然将简单数据库转换为功能齐全的关系数据库引擎。 驱动程序编写人员也不应期望实现基础数据库中未找到的功能。 有一种例外情况,编写直接访问文件数据的驱动程序(如 Xbase 文件中的数据)的开发人员需要编写至少支持最少 SQL 功能的数据库引擎。 另一种例外情况是,以前包含在 Microsoft 数据访问组件 (MDAC) SDK 中的 Windows SDK 的 ODBC 组件提供了一个游标库,用于为实现特定功能级别的驱动程序模拟可滚动游标。

使用 ODBC 的应用程序负责所有跨数据库功能。 例如,ODBC 不是异构联接引擎,也不是分布式事务处理器。 然而,由于其独立于 DBMS,因此可以用来构建此类跨数据库工具。