Déclaration de la version ODBC de l’application

Avant qu’une application alloue une connexion, elle doit définir l’attribut d’environnement SQL_ATTR_ODBC_VERSION. Cet attribut indique que l’application suit la spécification ODBC 2.x ou ODBC 3.x lors de l’utilisation des éléments suivants :

  • SQLSTATE. De nombreuses valeurs SQLSTATE sont différentes dans ODBC 2.x et ODBC 3.x.

  • Identificateurs de type date, heure et horodateur. Le tableau suivant présente les identificateurs de type pour les données de date, d’heure et d’horodateur dans ODBC 2.x et ODBC 3.x.

    ODBC 2.x ODBC 3.x
    Identificateurs de types SQL
    SQL_DATE SQL_TYPE_DATE
    SQL_TIME SQL_TYPE_TIME
    SQL_TIMESTAMP SQL_TYPE_TIMESTAMP
    Identificateurs de types C
    SQL_C_DATE SQL_C_TYPE_DATE
    SQL_C_TIME SQL_C_TYPE_TIME
    SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP
  • CatalogName Argument dans SQLTables. Dans ODBC 2.x, les caractères génériques (« % » et « _ ») dans l’argument CatalogName sont traités littéralement. Dans ODBC 3.x, ils sont traités comme des caractères génériques. Par conséquent, une application qui suit la spécification ODBC 2.x ne peut pas utiliser ces caractères génériques et ne les échappe pas lors de leur utilisation en tant que littéraux. Une application qui suit la spécification ODBC 3.x peut les utiliser comme caractères génériques ou les échapper et les utiliser comme littéraux. Pour plus d’informations, consultez Arguments dans les fonctions de catalogue.

Le gestionnaire de pilotes ODBC 3.x et les pilotes ODBC 3.x vérifient la version de la spécification ODBC pour laquelle une application est écrite et répondent en conséquence. Par exemple, si l’application suit la spécification ODBC 2.x et appelle SQLExecute avant d’appeler SQLPrepare, le gestionnaire de pilotes OBDC 3.x retourne SQLSTATE S1010 (erreur de séquence de fonction). Si l’application suit la spécification ODBC 3.x, le gestionnaire de pilotes retourne SQLSTATE HY010 (erreur de séquence de fonction). Pour plus d’informations, consultez Compatibilité descendante et conformité aux normes.

Important

Les applications qui suivent la spécification ODBC 3.x doivent utiliser du code conditionnel pour éviter d’utiliser les nouvelles fonctionnalités d’ODBC 3.x lors de l’utilisation des pilotes ODBC 2.x. Les pilotes ODBC 2.x ne prennent pas en charge les nouvelles fonctionnalités d’ODBC 3.x, car l’application déclare qu’elle suit la spécification ODBC 3.x. De plus, les pilotes ODBC 3.x continuent de prendre en charge les nouvelles fonctionnalités d’ODBC 3.x, car l’application déclare qu’elle suit la spécification ODBC 2.x.