Matrice de compatibilité
Le tableau suivant décrit la compatibilité des types d’applications et de pilotes définis précédemment dans cette section.
Type d'application et version |
ODBC 32 bits Pilote 2.x |
ODBC 3.x driver |
Pilote ODBC 3.8 | Pilote iso et open group conforme |
---|---|---|---|---|
Application 16 bits, toute version | Compatible | Compatible | Compatible | Compatible |
Application Pure 2.x | Compatible | Compatible | Compatible | Non compatible[3] |
Application recompilée pure 2.x | Compatible | Compatible[1] | Compatible[1] | Non compatible[3] |
Application Unicode pure 2.x | Compatible | Compatible[1] | Compatible[1] | Non compatible[3] |
Pure Open Group et application compatible ISO | Non compatible | Compatible[2] | Compatible[2] | Compatible[2] |
Application Pure 3.0 | Non compatible | Compatible | Compatible | Non compatible[4] |
Application Pure 3.5 | Non compatible | Compatible | Compatible | Non compatible[4] |
Application Pure 3.8 (ou ultérieure) | Non compatible [5] | Non compatible [5] | Compatible | Non compatible [4] |
Application remplacée | Compatible | Compatible | Compatible | Non compatible[3] |
[1] L’application doit recompiler à l’aide d’en-têtes ODBC 3.5 (ou ultérieur) avec l’option UNICODE (s’il s’agit d’une application Unicode) et doit définir ODBCVER sur 0x0250.
[2] L’application doit compiler à l’aide d’en-têtes ODBC 3.5 (ou version ultérieure) et établir un lien avec le Gestionnaire de pilotes ODBC. Il doit également définir l’indicateur d’en-tête ODBC_STD.
[3] Cette configuration peut échouer, car il existe des fonctionnalités dans ODBC 2.x qui ne figurent pas dans les normes, telles que les signets.
[4] Cette configuration peut échouer, car il existe des fonctionnalités dans ODBC 3.x qui ne sont pas dans les normes, telles que les signets.
[5] Cette configuration peut échouer, car il existe des fonctionnalités dans ODBC 3.8 qui ne se trouvent pas dans les pilotes ODBC 2.x ou 3.x, telles que les types de données C spécifiques au pilote dans ODBC.
Compatibilité du Gestionnaire de pilotes
Une application ODBC 3.0 qui doit fonctionner avec toutes les versions de Driver Manager doit effectuer les opérations suivantes au démarrage :
Allouez un handle d’environnement.
Définissez l’attribut d’environnement SQL_ATTR_ODBC_VERSION sur SQL_OV_ODBC3_80. Si le Gestionnaire de pilotes retourne SQL_ERROR, le Gestionnaire de pilotes est antérieur à 3,8. Réinitialisez SQL_ATTR_ODBC_VERSION sur SQL_OV_ODBC3 ou SQL_OV_ODBC2, le cas échéant, pour correspondre au Gestionnaire de pilotes.
Allouez un handle de connexion.
Établir une connexion.
Appelez SQLGetInfo pour SQL_DRIVER_ODBC_VER pour déterminer la version du pilote. Si le pilote est un pilote ODBC 3.8, vous pouvez utiliser des types C spécifiques au pilote. Sinon, n’utilisez pas de types de données C spécifiques au pilote.
Notez qu’une application ODBC 3.x recompilée peut utiliser des fonctionnalités ODBC 3.8 autres que les types C spécifiques au pilote sans spécifier SQL_OV_ODBC3_80 pour SQL_ATTR_ODBC_VERSION. Il s’agit d’une application ODBC 2.x recompilée à l’aide des fonctionnalités ODBC 3.x.
Utilisation de SQLCancelHandle dans une application compatible avec tous les gestionnaires de pilotes
Étant donné que la fonction SQLCancelHandle n’est pas prise en charge dans les gestionnaires de pilotes qui ont été publiés avant Windows 7, une application ne peut pas être chargée dans des versions antérieures de Windows si elle appelle DIRECTEMENT SQLCancelHandle . Pour utiliser toutes les versions des gestionnaires de pilotes et utiliser SQLCancelHandle sur les nouvelles versions de Windows, une application doit appeler INDIRECTEMENT SQLCancelHandle à l’aide de LoadLibrary et getProcAddress.