Поделиться через


Изменения поведения

Изменения поведения — это изменения, для которых синтаксис интерфейса остается неизменным, но семантика изменилась. Для этих изменений функциональность, используемая в 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 .

Атрибут среды SQL_ATTR_ODBC_VERSION задается вызовом SQLSetEnvAttr. Когда приложение вызывает SQLAllocHandle для выделения дескриптора среды, он должен немедленно вызывать SQLSetEnvAttr , чтобы задать поведение, которое он демонстрирует. (В результате возникает новое состояние среды для описания дескриптора в выделенном, но без версии состоянии.) Дополнительные сведения см. в приложении B: таблицы перехода состояния ODBC.

Приложение указывает, какое поведение оно проявляет с атрибутом среды SQL_ATTR_ODBC_VERSION, но атрибут не влияет на подключение приложения к ODBC 2. x или ODBC 3. x driver. Приложение ODBC 3.x может подключаться к драйверу ODBC 2.x или 3.x, независимо от значения атрибута окружения.

ODBC 3. Приложения x никогда не должны вызывать SQLAllocEnv. В результате, если диспетчер драйверов получает вызов SQLAllocEnv, он распознает приложение как ODBC 2. приложение x .

Атрибут SQL_ATTR_ODBC_VERSION влияет на три различных аспекта ODBC 3. Поведение драйвера x :

  • SQLSTATEs

  • Типы данных для даты, времени и метки времени

  • Аргумент CatalogName в SQLTables принимает шаблоны поиска в 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 для даты, времени и метки времени.

Этот раздел содержит следующие подразделы.