行为更改是接口 语法 保持不变但 语义 已更改的更改。 对于这些更改,ODBC 2.x 中的功能行为与在 ODBC 3.x 中的相同功能不同。
应用程序是否显示 ODBC 2。x 行为或 ODBC 3。x 行为由SQL_ATTR_ODBC_VERSION环境属性确定。 此 32 位值设置为SQL_OV_ODBC2以显示 ODBC 2。x 行为和SQL_OV_ODBC3来展示 ODBC 3。x 行为。
通过调用 SQLSetEnvAttr 设置SQL_ATTR_ODBC_VERSION环境属性。 应用程序调用 SQLAllocHandle 以分配环境句柄后,它必须立即调用 SQLSetEnvAttr 来设置它展示的行为。 (因此,有一个新的环境状态来描述已分配但无版本状态的环境句柄。有关详细信息,请参阅 附录 B:ODBC 状态转换表。
应用程序说明它与 SQL_ATTR_ODBC_VERSION 环境属性相关的行为,但该属性对应用程序与 ODBC 2.x 或 ODBC 3.x 驱动程序的连接没有影响。 ODBC 3。x 应用程序可以连接到 ODBC 2。x 或 3。x 驱动程序,无论环境属性的设置如何。
ODBC 3.x 应用程序不应调用 SQLAllocEnv。 因此,如果驱动程序管理器收到对 SQLAllocEnv 的调用,它将应用程序识别为 ODBC 2。x 应用程序。
SQL_ATTR_ODBC_VERSION属性影响 ODBC 3 的三个不同方面。x 驱动程序的行为:
SQLSTATE
日期、时间和时间戳的数据类型
SQLTables 中的 CatalogName 参数接受 ODBC 3 中的搜索模式。x,但不在 ODBC 2 中。x
SQL_ATTR_ODBC_VERSION环境属性的设置不会影响 SQLSetParam 或 SQLBindParam。 SQLColAttribute 也不受此位的影响。 尽管 SQLColAttribute 返回受 ODBC 版本(日期类型、精度、小数位数和长度)影响的属性,但预期行为由 FieldIdentifier 参数的值确定。 当 FieldIdentifier 等于 SQL_DESC_TYPE 时, SQLColAttribute 返回 ODBC 3。日期、时间和时间戳的 x 代码;当 FieldIdentifier 等于 SQL_COLUMN_TYPE 时, SQLColAttribute 返回 ODBC 2。日期、时间和时间戳的 x 代码。
本节包含以下主题。