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


Объявление версии ODBC приложения

Перед выделением подключения приложение должно задать атрибут среды SQL_ATTR_ODBC_VERSION. Этот атрибут указывает, что приложение следует спецификации ODBC 2.x или ODBC 3.x при использовании следующих элементов:

  • SQLSTATEs. Многие значения SQLSTATE отличаются в ODBC 2.x и ODBC 3.x.

  • Идентификаторы типов даты, времени и метки времени. В следующей таблице показаны идентификаторы типов для данных даты, времени и метки времени в ODBC 2.x и ODBC 3.x.

    ODBC 2.x ODBC 3.x
    Идентификаторы типа SQL
    SQL_DATE SQL_TYPE_DATE
    SQL_TIME SQL_TYPE_TIME
    SQL_TIMESTAMP SQL_TYPE_TIMESTAMP
    Идентификаторы типов C
    SQL_C_DATE SQL_C_TYPE_DATE
    SQL_C_TIME SQL_C_TYPE_TIME
    SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP
  • Аргумент CatalogNameв SQLTables. В ODBC 2.x дикие карта символы ("%" и "_") в аргументе CatalogName обрабатываются буквально. В ODBC 3.x они рассматриваются как дикие карта символы. Таким образом, приложение, которое следует спецификации ODBC 2.x, не может использовать их как дикие карта символы и не экранирует их при их использовании в качестве литерала. Приложение, которое следует спецификации ODBC 3.x, может использовать их как дикие карта символы или экранировать их и использовать в качестве литералов. Дополнительные сведения см. в разделе "Аргументы" в функциях каталога.

Драйверы ODBC 3.x и ODBC 3.x проверка версию спецификации ODBC, в которой приложение записывается и отвечает соответствующим образом. Например, если приложение следует спецификации ODBC 2.x и вызывает SQLExecute перед вызовом SQLPrepare, диспетчер драйверов ODBC 3.x возвращает SQLSTATE S1010 (ошибка последовательности функций). Если приложение следует спецификации ODBC 3.x , диспетчер драйверов возвращает SQLSTATE HY010 (ошибка последовательности функций). Дополнительные сведения см. в разделе "Обратная совместимость" и "Соответствие стандартам".

Важно!

Приложения, следуйте спецификации ODBC 3.x, должны использовать условный код, чтобы избежать использования функций, новых для ODBC 3.x при работе с драйверами ODBC 2.x. Драйверы ODBC 2.x не поддерживают функциональные возможности, новые для ODBC 3.x, так как приложение объявляет, что оно следует спецификации ODBC 3.x. Кроме того, драйверы ODBC 3.x не перестают поддерживать функциональные возможности, новые для ODBC 3.x, так как приложение объявляет, что оно следует спецификации ODBC 2.x.