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


Матрица совместимости

В следующей таблице описывается совместимость типов приложений и драйверов, определенных ранее в этом разделе.

Тип приложения

и версия
32-разрядная версия ODBC

Драйвер 2.x
ODBC 3.x

driver
Драйвер ODBC 3.8 Драйвер, совместимый с ISO и Open Group
16-разрядное приложение, любая версия Совместимый Совместимый Совместимый Совместимый
Чистое приложение 2.x Совместимый Совместимый Совместимый Несовместимо[3]
Приложение Pure 2.x, рекомпилированное Совместимый Совместимость[1] Совместимость[1] Несовместимо[3]
Чистое приложение Unicode 2.x Совместимый Совместимость[1] Совместимость[1] Несовместимо[3]
Приложение, полностью соответствующее стандартам Open Group и ISO Не совместимо Совместимость[2] Совместимость[2] Совместимость[2]
Чистое приложение 3.0 Не совместимо Совместимый Совместимый Несовместимо[4]
Чистое приложение 3.5 Не совместимо Совместимый Совместимый Несовместимо[4]
Чистое приложение 3.8 (или более поздней версии) Несовместимо [5] Несовместимо [5] Совместимый Несовместимо [4]
Замененное приложение Совместимый Совместимый Совместимый Несовместимо[3]

[1] Приложение должно повторно скомпилироваться с использованием заголовков ODBC 3.5 (или более поздней версии) с параметром Юникод (если это приложение на основе Юникода) и должно задать для ODBCVER значение 0x0250.

[2] Приложение должно компилироваться с помощью заголовков ODBC 3.5 (или более поздней версии) и связываться с диспетчером драйверов ODBC. Он также должен задать флаг заголовка ODBC_STD.

[3] Эта конфигурация может привести к сбою работы, так как в ODBC 2.x есть функции, которые не входят в стандарты, например закладки.

[4] Эта конфигурация может привести к сбою работы, так как в ODBC 3.x есть функции, которые не входят в стандарты, например закладки.

[5] Эта конфигурация может привести к сбою, так как в ODBC 3.8 есть функции, которые не находятся в драйверах ODBC 2.x или 3.x, таких как типы данных C для конкретного драйвера в ODBC.

Совместимость менеджера драйверов

Приложение ODBC 3.0, которое должно работать со всеми версиями Диспетчера драйверов, должно выполнять следующие действия при запуске:

  • Выделите дескриптор среды.

  • Задайте для атрибута среды SQL_ATTR_ODBC_VERSION значение SQL_OV_ODBC3_80. Если диспетчер драйверов возвращает SQL_ERROR, диспетчер драйверов старше 3.8. Сбросьте SQL_ATTR_ODBC_VERSION на SQL_OV_ODBC3 или SQL_OV_ODBC2 в соответствии с соответствующим диспетчером драйверов.

  • Выделите дескриптор подключения.

  • Сделайте подключение.

  • Вызовите SQLGetInfo для SQL_DRIVER_ODBC_VER, чтобы определить версию драйвера. Если драйвер является драйвером ODBC 3.8, можно использовать типы C для конкретного драйвера. В противном случае не используйте типы данных C для конкретного драйвера.

Обратите внимание, что перекомпилированное приложение ODBC 3.x может использовать функции ODBC 3.8, кроме типов C, зависящих от конкретного драйвера, без указания SQL_OV_ODBC3_80 для SQL_ATTR_ODBC_VERSION. Это похоже на перекомпилированное приложение ODBC 2.x с помощью функций ODBC 3.x.

Использование SQLCancelHandle в приложении, совместимом со всеми диспетчерами драйверов

Так как функция SQLCancelHandle не поддерживается в диспетчерах драйверов, выпущенных до Windows 7, приложение не может быть загружено в более ранних версиях Windows, если он вызывает SQLCancelHandle напрямую. Чтобы работать со всеми версиями диспетчеров драйверов и использовать SQLCancelHandle в новых версиях Windows, приложение должно вызывать SQLCancelHandle косвенно с помощью LoadLibrary и GetProcAddress.

См. также

Новые возможности ODBC 3.8