Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacja przekazuje długość bajtu buforu danych do sterownika w argumencie o nazwie BufferLength lub podobnej nazwie. Na przykład w poniższym wywołaniu metody SQLBindCol aplikacja określa długość buforu ValuePtr (sizeof(ValuePtr)):
SQLCHAR ValuePtr[50];
SQLINTEGER ValueLenOrInd;
SQLBindCol(hstmt, 1, SQL_C_CHAR, ValuePtr, sizeof(ValuePtr), &ValueLenOrInd);
Sterownik zawsze zwraca liczbę bajtów, a nie liczbę znaków w argumencie długości buforu dowolnej funkcji, która ma argument ciągu wyjściowego.
Długości buforów danych są wymagane tylko dla buforów wyjściowych; sterownik używa ich, aby uniknąć zapisywania poza końcem buforu. Sterownik sprawdza jednak długość buforu danych tylko wtedy, gdy bufor zawiera dane o zmiennej długości, takie jak dane znakowe lub binarne. Jeśli bufor zawiera dane o stałej długości, takie jak liczba całkowita lub struktura dat, sterownik ignoruje długość buforu danych i zakłada, że bufor jest wystarczająco duży, aby przechowywać dane; oznacza to, że nigdy nie obcina danych o stałej długości. Dlatego aplikacja musi przydzielić wystarczająco duży bufor dla danych o stałej długości.
Kiedy dochodzi do obcięcia ciągów wyjściowych niebędących danymi (takich jak nazwa kursora zwrócona przez SQLGetCursorName), zwracana długość w argumencie długości buforu to maksymalna możliwa długość znaków.
Długości buforów danych nie są wymagane dla buforów wejściowych, ponieważ sterownik nie zapisuje w te bufory.
Ta sekcja zawiera następujące tematy.