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


Объявление версии 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.