Compartilhar via


Função SQLDataSourceToDriver

SQLDataSourceToDriver dá suporte a transações para drivers ODBC. Essa função não é chamada por aplicativos habilitados para ODBC; os aplicativos solicitam a tradução por meio de 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 ser convertido.

cbValueIn
[Entrada] Comprimento de rgbValueIn.

rgbValueOut
[Saída] Resultado da tradução.

Observação

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

cbValueOutMax
[Entrada] Comprimento de rgbValueOut.

pcbValueOut
[Saída] O número total de bytes (excluindo o byte de terminação nula) disponível para retornar em rgbValueOut.

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

Para todos os outros tipos de dados, o valor de cbValueOutMax é ignorado e a DLL de tradução pressupõe que o tamanho de rgbValueOut seja 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
[Saída] Ponteiro para armazenamento para uma mensagem de erro. Essa é uma cadeia de caracteres vazia, a menos que a tradução falhe.

cbErrorMsgMax
[Entrada] Comprimento de szErrorMsg.

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

Retornos

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

Comentários

O driver chama SQLDataSourceToDriver para traduzir alldata (dados do conjunto de resultados, nomes de tabela, 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 dos dados e da finalidade da DLL de tradução; por exemplo, uma DLL que converte dados de caractere 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, ele pode especificar uma determinada conversã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, cbValueOutMax e pcbValueOut sejam do tipo SDWORD, SQLDataSourceToDriver não necessariamente dá suporte a ponteiros enormes.

Se SQLDataSourceToDriver retornar FALSE, o truncamento de dados poderá 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), ocorrerá truncamento. O driver deve determinar se o truncamento foi aceitável. Se o truncamento não ocorreu, o SQLDataSourceToDriver retornou FALSE devido a outro erro. Em ambos os casos, uma mensagem de erro específica é retornada em szErrorMsg.

Para obter mais informações sobre como traduzir dados, consulte DLLs de tradução.

Para obter informações sobre Consulte
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