Before an application allocates a connection, it must set the SQL_ATTR_ ODBC_VERSION environment attribute. This attribute states that the application follows the ODBC 2.x or ODBC 3.x specification when using the following items:
ODBC 2.x | ODBC 3.x |
SQL Type Identifiers | |
SQL_DATE | SQL_TYPE_DATE |
SQL_TIME | SQL_TYPE_TIME |
SQL_TIMESTAMP | SQL_TYPE_TIMESTAMP |
C Type Identifiers | |
SQL_C_DATE | SQL_C_TYPE_DATE |
SQL_C_TIME | SQL_C_TYPE_TIME |
SQL_C_TIMESTAMP | SQL_C_TYPE_TIMESTAMP |
The ODBC 3.x Driver Manager and ODBC 3.x drivers check the version of the ODBC specification to which an application is written and respond accordingly. For example, if the application follows the ODBC 2.x specification and calls SQLExecute before calling SQLPrepare, the ODBC 3.x Driver Manager returns SQLSTATE S1010 (Function sequence error). If the application follows the ODBC 3.x specification, the Driver Manager returns SQLSTATE HY010 (Function sequence error). For more information, see “Backward Compatibility and Standards Compliance” in Chapter 17, “Programming Considerations.”
Important Applications that follow the ODBC 3.x specification must use conditional code to avoid using functionality new to ODBC 3.x when working with ODBC 2.x drivers. ODBC 2.x drivers do not support functionality new to ODBC 3.x just because the application declares that it follows the ODBC 3.x specification. Furthermore, ODBC 3.x drivers do not cease to support functionality new to ODBC 3.x just because the application declares that it follows the ODBC 2.x specification.