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 :

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

  • Identificateurs de type date, heure et horodatage. Le tableau suivant présente les identificateurs de type pour les données de date, d’heure et d’horodatage 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 type C
    SQL_C_DATE SQL_C_TYPE_DATE
    SQL_C_TIME SQL_C_TYPE_TIME
    SQL_C_TIMESTAMP SQL_C_TYPE_TIMESTAMP
  • Argument CatalogNamedans SQLTables. Dans ODBC 2.x, les caractères génériques carte (« % » 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 carte. Par conséquent, une application qui suit la spécification ODBC 2.x ne peut pas les utiliser comme caractères génériques carte 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 carte ou les échapper et les utiliser comme littéraux. Pour plus d’informations, consultez Arguments dans les fonctions de catalogue.

Les pilotes ODBC 3.x Driver Manager et ODBC 3.x case activée la version de la spécification ODBC à laquelle une application est écrite et répond en conséquence. Par exemple, si l’application suit la spécification ODBC 2.x et appelle SQLExecute avant d’appeler SQLPrepare, odbc 3.x Driver Manager 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 fonctionnalités nouvelles d’ODBC 3.x lors de l’utilisation des pilotes ODBC 2.x. Les pilotes ODBC 2.x ne prennent pas en charge les fonctionnalités nouvelles d’ODBC 3.x , car l’application déclare qu’elle suit la spécification ODBC 3.x . En outre, les pilotes ODBC 3.x ne cessent pas de prendre en charge les fonctionnalités nouvelles d’ODBC 3.x , simplement parce que l’application déclare qu’elle suit la spécification ODBC 2.x .