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.
Funções relacionadas
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 |