Partager via


Récupération des informations sur les types de données avec SQLGetTypeInfo

Étant donné que les mappages des types de données SQL sous-jacents aux identificateurs de type ODBC sont approximatifs, ODBC fournit une fonction (SQLGetTypeInfo) par le biais de laquelle un pilote peut décrire complètement chaque type de données SQL dans la source de données. Cette fonction retourne un jeu de résultats, dont chaque ligne décrit les caractéristiques d’un type de données unique, tel que le nom, l’identificateur de type, la précision, l’échelle et la valeur Nullability.

Ces informations sont généralement utilisées par des applications génériques qui permettent à l’utilisateur de créer et de modifier des tables. Ces applications appellent SQLGetTypeInfo pour récupérer les informations de type de données, puis les présenter à l’utilisateur. Ces applications doivent être conscientes de deux choses :

  • Plusieurs types de données SQL peuvent être mappés à un identificateur de type unique, ce qui peut rendre difficile la détermination du type de données à utiliser. Pour résoudre ce problème, le jeu de résultats est classé en premier par identificateur de type et en second par proximité de la définition de l’identificateur de type. De plus, les types de données définis par la source de données sont prioritaires sur les types de données définis par l’utilisateur. Par exemple, supposons qu’une source de données définit les types de données INTEGER et COUNTER comme étant identiques, sauf que COUNTER est incrémenté automatiquement. Supposons également que le type WHOLENUM défini par l’utilisateur soit un synonyme d’INTEGER. Chacun de ces types est mappé à SQL_INTEGER. Dans le jeu de résultats SQLGetTypeInfo , INTEGER s’affiche en premier, suivi de WHOLENUM, puis COUNTER. WHOLENUM apparaît après INTEGER, car il est défini par l’utilisateur, mais avant COUNTER, car il correspond plus étroitement à la définition de l’identificateur de type SQL_INTEGER.

  • ODBC ne définit pas de noms de types de données à utiliser dans les instructions CREATE TABLE et ALTER TABLE . Au lieu de cela, l’application doit utiliser le nom retourné dans la colonne TYPE_NAME du jeu de résultats retourné par SQLGetTypeInfo. La raison en est que même si la plupart des services SQL ne varient pas beaucoup entre les SGBD, les noms de types de données varient énormément. Au lieu de forcer les pilotes à analyser les instructions SQL et à remplacer les noms de types de données standard par des noms de types de données spécifiques au SGBD, ODBC exige que les applications utilisent les noms spécifiques au SGBD au premier endroit.

Notez que SQLGetTypeInfo ne décrit pas nécessairement tous les types de données qu’une application peut rencontrer. En particulier, les jeux de résultats peuvent contenir des types de données non directement pris en charge par la source de données. Par exemple, les types de données des colonnes dans les jeux de résultats retournés par les fonctions de catalogue sont définis par ODBC et ces types de données peuvent ne pas être pris en charge par la source de données. Pour déterminer les caractéristiques des types de données dans un jeu de résultats, une application appelle SQLColAttribute.