SQLDescribeCol et SQLColAttribute

SQLDescribeCol et SQLColAttribute sont utilisés pour récupérer les métadonnées du jeu de résultats. La différence entre ces deux fonctions est que SQLDescribeCol retourne toujours les cinq mêmes informations (nom, type de données, précision, échelle et nullabilité d’une colonne), tandis que SQLColAttribute retourne une seule information demandée par l’application. Toutefois, SQLColAttribute peut retourner une sélection beaucoup plus riche de métadonnées, notamment la sensibilité à la casse, la taille d’affichage, la mise à jour et la recherche d’une colonne.

De nombreuses applications, en particulier celles qui affichent uniquement les données, nécessitent uniquement les métadonnées retournées par SQLDescribeCol. Pour ces applications, il est plus rapide d’utiliser SQLDescribeCol que SQLColAttribute , car les informations sont retournées dans un seul appel. D’autres applications, en particulier celles qui mettent à jour les données, nécessitent les métadonnées supplémentaires retournées par SQLColAttribute et utilisent donc les deux fonctions. En outre, SQLColAttribute prend en charge les métadonnées spécifiques au pilote. Pour plus d’informations, consultez Types de données spécifiques au pilote, Types de descripteur, Types d’informations, Types de diagnostic et Attributs.

Une application peut récupérer les métadonnées du jeu de résultats à tout moment une fois qu’une instruction a été préparée ou exécutée et avant la fermeture du curseur sur le jeu de résultats. Très peu d’applications nécessitent des métadonnées de jeu de résultats après la préparation de l’instruction et avant son exécution. Si possible, les applications doivent attendre la récupération des métadonnées jusqu’à ce que l’instruction soit exécutée, car certaines sources de données ne peuvent pas retourner les métadonnées pour les instructions préparées et la simulation de cette fonctionnalité dans le pilote est souvent un processus lent. Par exemple, le pilote peut générer un jeu de résultats de ligne zéro en remplaçant la clause WHERE d’une instruction SELECT par la clause WHERE 1 = 2 et l’exécution de l’instruction résultante.

Les métadonnées sont souvent coûteuses à récupérer à partir de la source de données. En raison de cela, les pilotes doivent mettre en cache toutes les métadonnées qu’ils récupèrent à partir du serveur et le conserver tant que le curseur sur le jeu de résultats est ouvert. En outre, les applications doivent demander uniquement les métadonnées dont elles ont absolument besoin.