Partager via


Liaison des colonnes d’un ensemble de résultats

Les applications peuvent lier autant ou autant de colonnes du jeu de résultats qu’elles choisissent, y compris la liaison aucune colonne du tout. Lorsqu’une ligne de données est extraite, le pilote retourne les données des colonnes liées à l’application. Si l’application lie toutes les colonnes du jeu de résultats dépend de l’application. Par exemple, les applications qui génèrent des rapports ont généralement un format fixe ; ces applications créent un jeu de résultats contenant toutes les colonnes utilisées dans le rapport, puis lient et récupèrent les données pour toutes ces colonnes. Les applications qui affichent des écrans pleins de données permettent parfois à l’utilisateur de décider quelles colonnes afficher ; ces applications créent un jeu de résultats contenant toutes les colonnes que l’utilisateur peut souhaiter, mais lier et récupérer les données uniquement pour ces colonnes choisies par l’utilisateur.

Les données peuvent être récupérées à partir de colonnes indépendantes en appelant SQLGetData. Il s’agit généralement de récupérer des données longues, qui dépassent souvent la longueur d’une mémoire tampon unique et doivent être récupérées en parties.

Les colonnes peuvent être liées à tout moment, même après la récupération des lignes. Toutefois, les nouvelles liaisons ne prennent effet qu’à la prochaine extraction d’une ligne ; ils ne sont pas appliqués aux données des lignes déjà extraites.

Une variable reste liée à une colonne jusqu’à ce qu’une variable différente soit liée à la colonne, tant que la colonne n’est pas liée en appelant SQLBindCol avec un pointeur Null comme adresse de la variable, jusqu’à ce que toutes les colonnes soient liées en appelant SQLFreeStmt avec l’option SQL_UNBIND, ou jusqu’à ce que l’instruction soit publiée. Pour cette raison, l’application doit être sûr que toutes les variables liées restent valides tant qu’elles sont liées. Pour plus d’informations, consultez Allocation et libération des mémoires tampons.

Étant donné que les liaisons de colonnes sont uniquement des informations associées à la structure d’instructions, elles peuvent être définies dans n’importe quel ordre. Elles sont également indépendantes du jeu de résultats. Par exemple, supposons qu’une application lie les colonnes du jeu de résultats généré par l’instruction SQL suivante :

SELECT * FROM Orders  

Si l’application exécute ensuite l’instruction SQL

SELECT * FROM Lines  

sur le même handle d’instruction, les liaisons de colonne pour le premier jeu de résultats sont toujours en vigueur, car il s’agit des liaisons stockées dans la structure d’instruction. Dans la plupart des cas, il s’agit d’une mauvaise pratique de programmation et devrait être évitée. Au lieu de cela, l’application doit appeler SQLFreeStmt avec l’option SQL_UNBIND pour dissocier toutes les anciennes colonnes, puis lier de nouvelles colonnes.