資料緩衝區類型

緩衝區的 C 資料類型由應用程式指定。 對於單一變數,這會在應用程式配置變數時發生。 對於通用記憶體 (即類型為 void 的指標指向其中的記憶體),這會在應用程式將記憶體強制轉換為特定類型時發生。 驅動程式會以兩種方式來探索此類型:

  • 資料緩衝區類型引數。 用來傳送參數值和結果集資料的緩衝區 (例如在 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 資料類型來解譯緩衝區中的資料。