Datenpuffertyp

Der C-Datentyp eines Puffers wird von der Anwendung angegeben. Bei einer einzelnen Variablen tritt dies auf, wenn die Anwendung die Variable zuweist. Bei generischem Speicher , d. h. speicher, auf den ein Zeiger vom Typ void verweist, tritt dies auf, wenn die Anwendung den Speicher in einen bestimmten Typ umgibt. Der Treiber ermittelt diesen Typ auf zwei Arten:

  • Argument für den Datentyp des Datentyps. Puffer, die zum Übertragen von Parameterwerten und Resultsetdaten verwendet werden, z. B. der puffer, der mit TargetValuePtr in SQLBindCol gebunden ist, weisen in der Regel ein zugeordnetes Typargument auf, z. B. das TargetType-Argument in SQLBindCol. In diesem Argument übergibt die Anwendung den C-Typbezeichner, der dem Typ des Puffers entspricht. Im folgenden Aufruf von SQLBindCol teilt der Wert SQL_C_TYPE_DATE dem Treiber beispielsweise mit, dass der Datumspuffer ein SQL_DATE_STRUCT ist:

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

    Weitere Informationen zu Typbezeichnern finden Sie im Abschnitt "Datentypen in ODBC" weiter unten in diesem Abschnitt.

  • Vordefinierter Typ. Puffer, die zum Senden und Abrufen von Optionen oder Attributen verwendet werden, z. B. der Puffer, auf den das InfoValuePtr-Argument in SQLGetInfo verweist, weisen einen festen Typ auf, der von der angegebenen Option abhängt. Der Treiber geht davon aus, dass der Datenpuffer dieses Typs ist; es liegt in der Verantwortung der Anwendung, einen Puffer dieses Typs zuzuweisen. Beispielsweise geht der Treiber im folgenden Aufruf von SQLGetInfo davon aus, dass der Puffer eine 32-Bit-Ganzzahl ist, da dies die SQL_STRING_FUNCTIONS Option erfordert:

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

Der Treiber verwendet den Datentyp C, um die Daten im Puffer zu interpretieren.