數據緩衝區長度

應用程式會以一個名為 BufferLength 或類似名稱的參數,將資料緩衝區的位元組長度傳給驅動程式。 例如,在以下對 SQLBindCol 的呼叫中,應用程式指定 ValuePtr 緩衝區的長度(sizeof(ValuePtr):

SQLCHAR      ValuePtr[50];  
SQLINTEGER   ValueLenOrInd;  
SQLBindCol(hstmt, 1, SQL_C_CHAR, ValuePtr, sizeof(ValuePtr), &ValueLenOrInd);  

驅動程式會總是回傳任何有輸出字串參數的函式緩衝長度參數中的位元組數,而非字元數。

資料緩衝區長度僅需用於輸出緩衝區;驅動程式使用它們來避免寫入緩衝區結束後。 然而,驅動程式僅在緩衝區包含可變長度資料(如字元或二進位資料)時,才會檢查資料緩衝區長度。 若緩衝區包含固定長度資料,如整數或日期結構,驅動程式會忽略資料緩衝區長度,並假設緩衝區足夠大以容納資料;也就是說,它從不截斷固定長度的資料。 因此,應用程式必須為固定長度資料分配足夠大的緩衝區。

當非資料輸出字串出現截斷(例如 SQLGetCursorName 回傳的游標名稱)時,緩衝區長度參數中回傳的長度即為最大字元長度。

輸入緩衝區不需要資料緩衝區長度,因為驅動程式不會寫入這些緩衝區。

此章節包含下列主題。