Types de données C dans ODBC

ODBC définit les types de données C utilisés par les variables d’application et leurs identificateurs de type correspondants. Celles-ci sont utilisées par les mémoires tampons liées aux colonnes et paramètres d’instruction du jeu de résultats. Par exemple, supposons qu’une application souhaite récupérer des données d’une colonne de jeu de résultats au format caractère. Il déclare une variable avec le type de données SQLCHAR * et lie cette variable à la colonne du jeu de résultats avec un identificateur de type de SQL_C_CHAR. Pour obtenir la liste complète des types de données C et des identificateurs de type, consultez l’annexe D : Types de données.

ODBC définit également un mappage par défaut de chaque type de données SQL vers un type de données C. Par exemple, un entier de 2 octets dans la source de données est mappé à un entier de 2 octets dans l’application. Pour utiliser le mappage par défaut, une application spécifie l’identificateur de type SQL_C_DEFAULT. Toutefois, l’utilisation de cet identificateur est déconseillée pour des raisons d’interopérabilité.

Tous les types de données C entiers définis dans ODBC 1.x ont été signés. Les types de données C non signés et leurs identificateurs de type correspondants ont été ajoutés dans ODBC 2.0. En raison de cela, les applications et les pilotes doivent être particulièrement prudents lors de la gestion des versions 1.x .

Extensibilité du type de données C

Dans ODBC 3.8, vous pouvez spécifier des types de données C spécifiques au pilote. Cela vous permet de lier un type SQL en tant que type C spécifique au pilote dans les applications ODBC lorsque vous appelez SQLBindCol, SQLGetData ou SQLBindParameter. Cela peut être utile pour prendre en charge de nouveaux types de serveur, car les types de données C existants peuvent ne pas représenter correctement les nouveaux types de données serveur. L’utilisation de types C spécifiques au pilote peut augmenter le nombre de conversions que les pilotes peuvent effectuer.

Par exemple, supposons qu’un système de gestion de base de données (SGBD) a introduit un nouveau type SQL, DATETIMEOFFSET, pour représenter la date et l’heure avec les informations de fuseau horaire. Il n’existe aucun type C spécifique dans ODBC qui correspond à DATETIMEOFFSET. Une application doit lier DATETIMEOFFSET comme SQL_C_BINARY et la convertir en un type de données défini par l’utilisateur. À compter d’ODBC 3.8 avec l’extensibilité du type de données C, un pilote peut définir un nouveau type C correspondant. Par exemple, pour le nouveau type SQL DATETIMEOFFSET, le pilote peut définir un nouveau type C correspondant tel que SQL_C_DATETIMEOFFSET. Ensuite, une application peut lier le nouveau type SQL en tant que type C spécifique au pilote.

Un type de données C est défini dans le pilote comme suit :

  • Le niveau de conformité ODBC pour une application, un pilote ODBC et le Gestionnaire de pilotes est 3.8 (ou version ultérieure).

  • La plage de données d’un type C spécifique au pilote est comprise entre 0x4000 et 0x7FFF.

  • Le pilote définit la structure des données correspondant au type C. Cela peut être effectué dans le Kit de développement logiciel (SDK) spécifique au pilote.

Le gestionnaire de pilotes ne valide pas un type C défini dans la plage de 0x4000 et de 0x7FFF ; le pilote effectue la validation et toute conversion de type de données. Toutefois, si la plage de données d’un type C passée au gestionnaire de pilotes est comprise entre 0x0000 et 0x3FFF ou entre 0x8000 et 0xFFFF, le gestionnaire de pilotes valide le type de données C.

Remarque

Les types de données C spécifiques au pilote doivent être décrits dans la documentation du pilote.

Pour spécifier un niveau de conformité ODBC de 3.8, une application appelle SQLSetEnvAttr avec l’attribut SQL_ATTR_ODBC_VERSION défini sur SQL_OV_ODBC3_80. Pour déterminer la version du pilote, une application appelle SQLGetInfo avec SQL_DRIVER_ODBC_VER.

Pour plus d’informations sur ODBC 3.8, consultez Nouveautés d’ODBC 3.8.

Voir aussi

Type de données C