Поделиться через


Функция SQLDriverToDataSource

SQLDriverToDataSource поддерживает переводы драйверов ODBC. Эта функция не вызывается приложениями с поддержкой ODBC; приложения запрашивают перевод с помощью SQLSetConnectAttr. Драйвер, связанный с ConnectionHandle , указанный в SQLSetConnectAttr , вызывает указанную библиотеку DLL для выполнения переводов всех данных, поступающих из драйвера в источник данных. Библиотеку DLL перевода по умолчанию можно указать в файле инициализации ODBC.

Синтаксис

  
BOOL SQLDriverToDataSource(  
     UDWORD     fOption,  
     SWORD      fSqlType,  
     PTR        rgbValueIn,  
     SDWORD     cbValueIn,  
     PTR        rgbValueOut,  
     SDWORD     cbValueOutMax,  
     SDWORD *   pcbValueOut,  
     UCHAR *    szErrorMsg,  
     SWORD      cbErrorMsgMax,  
     SWORD *    pcbErrorMsg);  

Аргументы

fOption
[Входные данные] Значение параметра.

fSqlType
[Входные данные] Тип данных ODBC SQL. Этот аргумент сообщает драйверу, как преобразовать rgbValueIn в форму, допустимую источником данных. Список допустимых типов данных SQL см. в разделе "Типы данных SQL".

rgbValueIn
[Входные данные] Значение для перевода.

cbValueIn
[Входные данные] Длина rgbValueIn.

rgbValueOut
[Выходные данные] Результат перевода.

Заметка

Библиотека DLL перевода не завершает это значение null.

cbValueOutMax
[Входные данные] Длина rgbValueOut.

pcbValueOut
[Выходные данные] Общее количество байтов (за исключением байта завершения null), доступное для возврата в rgbValueOut.

Для символьных или двоичных данных, если это больше или равно cbValueOutMax, данные в rgbValueOut усечены до cbValueOutMax байтов.

Для всех других типов данных значение cbValueOutMax игнорируется, а библиотека DLL перевода предполагает, что размер rgbValueOut — это размер типа данных C по умолчанию типа данных SQL, указанного в fSqlType.

Аргумент pcbValueOut может быть пустым указателем.

szErrorMsg
[Выходные данные] Указатель на хранилище для сообщения об ошибке. Это пустая строка, если перевод не завершился ошибкой.

cbErrorMsgMax
[Входные данные] Длина szErrorMsg.

pcbErrorMsg
[Выходные данные] Указатель на общее число байтов (за исключением байта завершения null), доступное для возврата в szErrorMsg. Если это больше или равно cbErrorMsg, данные в szErrorMsg усечены до cbErrorMsgMax минус символ завершения null. Аргумент pcbErrorMsg может быть указателем null.

Возвраты

Значение TRUE, если перевод выполнен успешно, значение FALSE, если перевод завершился ошибкой.

Комментарии

Драйвер вызывает SQLDriverToDataSource для перевода всех данных (инструкций SQL, параметров и т. д.), передаваемых из драйвера в источник данных. Библиотека DLL перевода может не переводить некоторые данные в зависимости от типа данных и назначения библиотеки DLL перевода. Например, библиотека DLL, которая преобразует символьные данные из одной кодовой страницы в другую, игнорирует все числовые и двоичные данные.

Значение fOption задается значением vParam, указанным путем вызова SQLSetConnectAttr с атрибутом SQL_ATTR_TRANSLATE_OPTION. Это 32-разрядное значение, которое имеет определенное значение для заданной библиотеки DLL перевода. Например, он может указать определенный перевод набора символов.

Если для rgbValueIn и rgbValueOut указан тот же буфер, то преобразование данных в буфер будет выполнено на месте.

Хотя cbValueIn, cbValueOutMax и pcbValueOut имеют тип SDWORD, SQLDriverToDataSource не обязательно поддерживает огромные указатели.

Если SQLDriverToDataSource возвращает ЗНАЧЕНИЕ FALSE, возможно, во время перевода произошла усечение данных. Если pcbValueOut (число байтов, доступных для возврата в выходном буфере), больше cbValueOutMax (длина выходного буфера), то произошло усечение. Драйвер должен определить, является ли усечение приемлемым. Если усечение не произошло, SQLDriverToDataSource вернул значение FALSE из-за другой ошибки. В любом случае определенное сообщение об ошибке возвращается в szErrorMsg.

Дополнительные сведения о переводе данных см. в разделе БИБЛИОТЕК DLL перевода.

Сведения Раздел
Преобразование данных, возвращаемых из источника данных SQLDataSourceToDriver
Возврат параметра атрибута подключения SQLGetConnectAttr
Настройка атрибута подключения SQLSetConnectAttr