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


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

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

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

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

  • атрибуты SQLSTATE

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

  • Аргумент 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 для даты, времени и метки времени.

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