數據緩衝區類型

緩衝區的 C 資料型態由應用程式指定。 對於單一變數,當應用程式分配該變數時,就會發生這種情況。 使用通用記憶體——即由類型為空的指標指向的記憶體——當應用程式將記憶體投射到特定類型時,就會發生這種情況。 駕駛人發現這種類型有兩種方式:

  • 資料緩衝區類型參數。 用於傳輸參數值與結果集資料的緩衝區,例如在 SQLBindCol 中與 TargetValuePtr 綁定的緩衝區,通常會有一個相關的型別參數,例如 SQLBindCol 中的 TargetType 參數。 在此參數中,應用程式傳遞對應緩衝區類型 C 型別識別碼。 例如,在以下對 SQLBindCol 的呼叫中,SQL_C_TYPE_DATE 值告訴驅動程式 Date 緩衝區是 SQL_DATE_STRUCT:

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

    欲了解更多關於類型識別碼的資訊,請參閱本節後面的「 ODBC 資料型別 」章節。

  • 預先定義型別。 用於傳送和檢索選項或屬性的緩衝區,例如 SQLGetInfo 中 InfoValuePtr 參數所指向的緩衝區,具有固定型別,取決於所指定的選項。 驅動程式假設資料緩衝區屬於此類型;應用程式負責分配此類緩衝區。 例如,在以下對 SQLGetInfo 的呼叫中,驅動程式假設緩衝區為 32 位元整數,因為這正是 SQL_STRING_FUNCTIONS 選項所要求的:

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

驅動程式使用 C 資料型別來解讀緩衝區中的資料。