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


Функция SQLDataSourceToDriver

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

Синтаксис

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

Аргументы

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

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

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, если перевод завершился ошибкой.

Комментарии

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

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

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

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

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

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

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