Partager via


Type de tampon de données

Le type de données C d’une mémoire tampon est spécifié par l’application. Avec une variable unique, cela se produit lorsque l’application alloue la variable. Avec la mémoire générique , c’est-à-dire la mémoire pointée par un pointeur de type void , cela se produit lorsque l’application convertit la mémoire en un type particulier. Le pilote découvre ce type de deux façons :

  • Argument de type de mémoire tampon de données. Les mémoires tampons utilisées pour transférer des valeurs de paramètre et des données de jeu de résultats, telles que la mémoire tampon liée à TargetValuePtr dans SQLBindCol, ont généralement un argument de type associé, tel que l’argument TargetType dans SQLBindCol. Dans cet argument, l’application transmet l’identificateur de type C qui correspond au type de la mémoire tampon. Par exemple, dans l’appel suivant à SQLBindCol, la valeur SQL_C_TYPE_DATE indique au pilote que la mémoire tampon Date est un SQL_DATE_STRUCT :

    SQL_DATE_STRUCT Date;  
    SQLINTEGER  DateInd;  
    SQLBindCol(hstmt, 1, SQL_C_TYPE_DATE, &Date, 0, &DateInd);  
    

    Pour plus d’informations sur les identificateurs de type, consultez la section Types de données dans ODBC , plus loin dans cette section.

  • Type prédéfini. Les mémoires tampons utilisées pour envoyer et récupérer des options ou des attributs, tels que la mémoire tampon pointée par l’argument InfoValuePtr dans SQLGetInfo, ont un type fixe qui dépend de l’option spécifiée. Le pilote part du principe que la mémoire tampon de données est de ce type ; il incombe à l’application d’allouer une mémoire tampon de ce type. Par exemple, dans l’appel suivant à SQLGetInfo, le pilote suppose que la mémoire tampon est un entier 32 bits, car il s’agit de ce que l’option SQL_STRING_FUNCTIONS requiert :

    SQLUINTEGER StringFuncs;  
    SQLGetInfo(hdbc, SQL_STRING_FUNCTIONS, (SQLPOINTER) &StringFuncs, 0,  
                NULL);  
    

Le pilote utilise le type de données C pour interpréter les données dans la mémoire tampon.