Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующей таблице описывается совместимость типов приложений и драйверов, определенных ранее в этом разделе.
| Тип приложения и версия |
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.