Partilhar via


Função SQLDataSourceToDriver

SQLDataSourceToDriver suporta traduções para drivers ODBC. Esta função não é chamada por aplicativos habilitados para ODBC; aplicativos solicitam tradução através SQLSetConnectAttr. O driver associado ao ConnectionHandle especificado em SQLSetConnectAttr chama a DLL especificada para executar traduções de todos os dados que fluem da fonte de dados para o driver. Uma DLL de tradução padrão pode ser especificada no arquivo de inicialização ODBC.

Sintaxe

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

Argumentos

fOption
[Entrada] Valor da opção.

fSqlType
[Entrada] O tipo de dados SQL. Esse argumento informa ao driver como converter rgbValueIn em um formulário aceitável pelo aplicativo. Para obter uma lista de tipos de dados SQL válidos, consulte a seção Tipos de Dados SQL no Apêndice D: Tipos de Dados.

rgbValueIn
[Entrada] Valor a traduzir.

cbValueIn
[Entrada] Comprimento de rgbValueIn.

rgbValueOut
[Realização] Resultado da tradução.

Observação

A DLL de tradução não termina esse valor de nulo.

cbValueOutMax
[Entrada] Comprimento de rgbValueOut.

pcbValueOut
[Realização] O número total de bytes (excluindo o byte de terminação nulo) disponíveis para retornar em rgbValueOut.

Para dados binários ou de caracteres, se isso for maior ou igual a cbValueOutMax , os dados no rgbValueOut serão truncados para cbValueOutMax bytes.

Para todos os outros tipos de dados, o valor de cbValueOutMax é ignorado e a DLL de conversão assume que o tamanho de rgbValueOut é o tamanho do tipo de dados C padrão do tipo de dados SQL especificado com fSqlType.

O argumento pcbValueOut pode ser um ponteiro nulo.

szErrorMsg
[Realização] Ponteiro para armazenamento para uma mensagem de erro. Esta é uma cadeia de caracteres vazia, a menos que a tradução falhe.

cbErrorMsgMax
[Entrada] Comprimento de szErrorMsg.

pcbErrorMsg
[Realização] Ponteiro para o número total de bytes (excluindo o byte de terminação nula) disponíveis para retornar em szErrorMsg. Se isso for maior ou igual a cbErrorMsg , os dados em szErrorMsg serão truncados para cbErrorMsgMax menos o caractere de terminação nula. O pcbErrorMsg argumento pode ser um ponteiro nulo.

Devoluções

TRUE se a tradução foi bem-sucedida, FALSE se a tradução falhou.

Observações

O driver chama SQLDataSourceToDriver para traduzir todos os dados (dados do conjunto de resultados, nomes de tabelas, contagens de linhas, mensagens de erro e assim por diante) passando da fonte de dados para o driver. A DLL de tradução pode não traduzir alguns dados, dependendo do tipo de dados e da finalidade da DLL de tradução; por exemplo, uma DLL que traduz dados de caracteres de uma página de código para outra ignora todos os dados numéricos e binários.

O valor de fOption é definido como o valor de vParam especificado chamando SQLSetConnectAttr com o atributo SQL_ATTR_TRANSLATE_OPTION. É um valor de 32 bits que tem um significado específico para uma determinada DLL de tradução. Por exemplo, poderia especificar uma determinada tradução de conjunto de caracteres.

Se o mesmo buffer for especificado para rgbValueIn e rgbValueOut, a conversão de dados no buffer será executada no local.

Embora cbValueIn , cbValueOutMaxe pcbValueOut sejam do tipo SDWORD, SQLDataSourceToDriver não suporta necessariamente ponteiros enormes.

Se SQLDataSourceToDriver retornar FALSE, o truncamento de dados pode ter ocorrido durante a tradução. Se pcbValueOut (o número de bytes disponíveis para retornar no buffer de saída) for maior que cbValueOutMax (o comprimento do buffer de saída), ocorreu truncamento. O condutor deve determinar se o truncamento foi aceitável. Se o truncamento não ocorreu, o SQLDataSourceToDriver retornado FALSE devido a outro erro. Em ambos os casos, uma mensagem de erro específica é retornada no szErrorMsg.

Para obter mais informações sobre como traduzir dados, consulte Translation DLLs.

Para obter informações sobre Ver
Traduzir dados que estão sendo enviados para a fonte de dados SQLDriverToDataSource
Retornando a configuração de um atributo de conexão SQLGetConnectAttr
Definindo um atributo de conexão SQLSetConnectAttr