Compartilhar via


Função SQLDriverToDataSource

SQLDriverToDataSource dá suporte a traduçõ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 do driver para a fonte de dados. Uma DLL de tradução padrão pode ser especificada no arquivo de inicialização ODBC.

Sintaxe

  
BOOL SQLDriverToDataSource(  
     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 ODBC. Esse argumento informa ao driver como converter rgbValueIn em um formulário aceitável pela fonte de dados. Para obter uma lista de tipos de dados SQL válidos, consulte Tipos de dados SQL.

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 SQLDriverToDataSource para traduzir todos os dados (instruções SQL, parâmetros e assim por diante) passando do driver para a fonte de dados. 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, SQLDriverToDataSource não necessariamente dá suporte a ponteiros enormes.

Se SQLDriverToDataSource 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 ou não. Se o truncamento não ocorreu, o SQLDriverToDataSource 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 retornados da fonte de dados SQLDataSourceToDriver
Retornando a configuração de um atributo de conexão SQLGetConnectAttr
Definindo um atributo de conexão SQLSetConnectAttr