声明应用程序的 ODBC 版本

在应用程序分配连接之前,必须设置 SQL_ATTR_ODBC_VERSION 环境属性。 此属性声明应用程序在使用以下项时遵循 ODBC 2.x 或 ODBC 3.x 规范:

  • SQLSTATEs。 ODBC 2.x 和 ODBC 3.x 中的许多 SQLSTATE 值有所不同。

  • 日期、时间和时间戳类型标识符。 下表显示了 ODBC 2.x 和 ODBC 3.x 中日期、时间和时间戳数据的类型标识符。

    ODBC 2.x ODBC 3.x
    SQL 类型标识符
    SQL_DATE SQL_TYPE_DATE
    SQL_TIME SQL_TYPE_TIME
    SQL_TIMESTAMP SQL_TYPE_TIMESTAMP
    C 类型标识符
    SQL_C_DATE SQL_C_TYPE_DATE
    SQL_C_TIME SQL_C_TYPE_TIME
    SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP
  • SQLTables 中CatalogName 参数。 在 ODBC 2.x 中,CatalogName 参数中的通配符(“%”和“_”)被视为文本处理。 在 ODBC 3.x 中,会被视为通配符处理。 因此,遵循 ODBC 2.x 规范的应用程序不能将这些字符用作通配符,并且将这些字符用作文本时不会对其进行转义。 遵循 ODBC 3.x 规范的应用程序可以将这些字符用作通配符,或者转义这些字符并将其用作文本。 有关详细信息,请参阅目录函数中的参数

ODBC 3.x 驱动程序管理器和 ODBC 3.x 驱动程序检查应用程序写入的 ODBC 规范版本,并相应地做出响应。 例如,如果应用程序遵循 ODBC 2.x 规范,并在调用 SQLPrepare 之前调用 SQLExecute,则 ODBC 3.x 驱动程序管理器将返回 SQLSTATE S1010(函数序列错误)。。 如果应用程序遵循 ODBC 3.x 规范,驱动程序管理器将返回 SQLSTATE HY010(函数序列错误)。 有关详细信息,请参阅向后兼容性和标准符合性

重要

遵循 ODBC 3.x 规范的应用程序必须使用条件代码,以避免在使用 ODBC 2.x 驱动程序时使用 ODBC 3.x 的新增功能。 ODBC 2.x 驱动程序不会因为应用程序声明其遵循 ODBC 3.x 规范而支持 ODBC 3.x 的新增功能。 此外,ODBC 3.x 驱动程序不会因为应用程序声明其遵循 ODBC 2.x 规范而停止支持 ODBC 3.x 的新增功能。