Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Conformidade
Versão Introduzida: Conformidade com as Normas ODBC 3.0: ISO 92
Summary
SQLGetConnectAttr retorna a configuração atual de um atributo de conexão.
Note
Para mais informações sobre a que o Gerenciador de Drivers mapeia essa função quando uma aplicação ODBC 3*.x* está trabalhando com um driver ODBC 2*.x*, veja Mapeamento de Funções de Substituição para Compatibilidade Retroativa de Aplicações.
Sintaxe
SQLRETURN SQLGetConnectAttr(
SQLHDBC ConnectionHandle,
SQLINTEGER Attribute,
SQLPOINTER ValuePtr,
SQLINTEGER BufferLength,
SQLINTEGER * StringLengthPtr);
Argumentos
Identificador de conexão
[Entrada] Identificador de conexão.
Atributo
[Entrada] Atributo para recuperar.
ValuePtr
[Saída] Um ponteiro para a memória no qual deveria retornar o valor atual do atributo especificado por Attribute. Para atributos do tipo inteiro, alguns drivers podem escrever apenas os 32 ou 16 bits inferiores de um buffer e deixar o bit de ordem superior inalterado. Portanto, as aplicações devem usar um buffer de SQLULEN e inicializar o valor em 0 antes de chamar essa função.
Se ValuePtr for NULL, StringLengthPtr ainda retornará o número total de bytes (excluindo o caractere de terminação nula para dados de caracteres) disponíveis para retorno no buffer apontado pelo ValuePtr.
BufferLength
[Entrada] Se Attribute for um atributo definido por ODBC e ValuePtr apontar para uma cadeia de caracteres ou um buffer binário, esse argumento deverá ter o comprimento de *ValuePtr. Se Atributo for um atributo definido por ODBC e *ValuePtr for um inteiro, BufferLength é ignorado. Se o valor em *ValuePtr for uma string Unicode (ao chamar SQLGetConnectAttrW), o argumento BufferLength deve ser um número par.
Se o Atributo for definido pelo driver, a aplicação indica a natureza do atributo ao Driver Manager definindo o argumento BufferLength . BufferLength pode ter os seguintes valores:
Se *ValuePtr é um ponteiro para uma string de caracteres, BufferLength é o comprimento da string.
Se *ValuePtr for um ponteiro para um buffer binário, a aplicação coloca o resultado da macro SQL_LEN_BINARY_ATTR(comprimento) em BufferLength. Isso coloca um valor negativo no BufferLength.
Se *ValuePtr for um ponteiro para um valor diferente de uma string de caracteres ou binária, BufferLength deve ter o valor SQL_IS_POINTER.
Se *ValuePtr contém um tipo de dado de comprimento fixo, BufferLength é SQL_IS_INTEGER ou SQL_IS_UINTEGER, conforme apropriado.
StringLengthPtr
[Saída] Um ponteiro para um buffer no qual deveria retornar o número total de bytes (excluindo o caractere de terminação nula) disponíveis para retorno em *ValuePtr. Se o valor do atributo for uma string de caracteres e o número de bytes disponíveis para retorno for maior que BufferLength menos o comprimento do caractere de terminação nula, os dados em *ValuePtr são truncados para BufferLength menos o comprimento do caractere de terminação nula e são terminados por null pelo driver.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NO_DATA, SQL_ERROR ou SQL_INVALID_HANDLE.
Diagnostics
Quando SQLGetConnectAttr retorna SQL_ERROR ou SQL_SUCCESS_WITH_INFO, um valor SQLSTATE associado pode ser obtido a partir da estrutura de dados de diagnóstico chamando SQLGetDiagRec com um HandleType de SQL_HANDLE_DBC e um Handle de ConnectionHandle. A tabela a seguir lista os valores SQLSTATE normalmente retornados pelo SQLGetConnectAttr e explica cada um no contexto dessa função; a notação "(DM)" precede as descrições dos SQLSTATEs retornadas pelo Gerenciador de Drivers. O código de retorno associado a cada valor SQLSTATE é SQL_ERROR, a menos que indicado de outra forma.
| SQLSTATE | Erro | DESCRIÇÃO |
|---|---|---|
| 01000 | Aviso geral | Mensagem informativa específica do driver. (A função retorna SQL_SUCCESS_WITH_INFO.) |
| 01004 | Dados de cadeia de caracteres, truncados à direita | Os dados retornados em *ValuePtr foram truncados para ser BufferLength menos o comprimento de um caractere de terminação nula. O comprimento do valor da string não arrunada é retornado em *StringLengthPtr. (A função retorna SQL_SUCCESS_WITH_INFO.) |
| 08003 | Conexão não aberta | (DM) Um valor de Atributo que exigia uma conexão aberta foi especificado. |
| 08S01 | Falha no link de comunicação | O link de comunicação entre o driver e a fonte de dados à qual o driver estava conectado falhou antes que a função concluísse o processamento. |
| HY000 | Erro geral | Ocorreu um erro para o qual não havia SQLSTATE específico e para o qual nenhum SQLSTATE específico da implementação foi definido. A mensagem de erro retornada pela estrutura de dados de diagnóstico pelo argumento MessageText em SQLGetDiagField descreve o erro e sua causa. |
| HY001 | Erro de alocação de memória | O driver não pôde alocar a memória necessária para dar suporte à execução ou conclusão da função. |
| HY010 | Erro de sequência de função | (DM) SQLBrowseConnect foi chamado para o ConnectionHandle e retornou SQL_NEED_DATA. Essa função era chamada antes do SQLBrowseConnect retornar SQL_SUCCESS_WITH_INFO ou SQL_SUCCESS. (DM) SQLExecute, SQLExecDirect ou SQLMoreResults era chamado para o ConnectionHandle e retornava SQL_PARAM_DATA_AVAILABLE. Essa função foi chamada antes que os dados fossem recuperados para todos os parâmetros transmitidos. |
| HY013 | Erro de gerenciamento de memória | A chamada de função não pôde ser processada porque os objetos de memória subjacentes não puderam ser acessados, possivelmente devido a condições de memória baixa. |
| HY090 | Cadeia de caracteres ou comprimento de buffer inválido | (DM) *ValuePtr é uma cadeia de caracteres, e BufferLength era menor que zero, mas não igual a SQL_NTS. |
| HY092 | Identificador de atributo/opção inválido | O valor especificado para o atributo do argumento não era válido para a versão do ODBC suportada pelo driver. |
| HY114 | Driver não suporta execução de funções assíncronas em nível de conexão | (DM) Uma aplicação tentou habilitar a execução de funções assíncronas com SQL_ATTR_ASYNC_DBC_FUNCTIONS_ENABLE para um driver que não suporta operações de conexão assíncronas. |
| HY117 | A conexão está suspensa devido ao estado desconhecido da transação. Somente funções de desconexão e somente leitura são permitidas. | (DM) Para obter mais informações sobre o estado suspenso, consulte Função SQLEndTran. |
| HYC00 | Recurso opcional não implementado | O valor especificado para o atributo do argumento Attribute era um atributo válido de conexão ODBC para a versão de ODBC suportada pelo driver, mas não era suportado pelo driver. |
| HYT01 | O tempo limite da conexão expirou | O período de tempo limite da conexão expirou antes que a fonte de dados respondesse à solicitação. O período de tempo limite da conexão é definido por meio de SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT. |
| IM001 | O driver não suporta esta função | (DM) O driver que corresponde ao ConnectionHandle não dá suporte à função. |
Comments
Para informações gerais sobre atributos de conexão, veja Atributos de Conexão.
Para uma lista de atributos que podem ser definidos, veja SQLSetConnectAttr. Note que, se o Atributo especificar um atributo que retorna uma string, o ValuePtr deve ser um ponteiro para um buffer para a cadeia. O comprimento máximo da string retornada, incluindo o caractere de terminação nula, será bytes BufferLength .
Dependendo do atributo, uma aplicação não precisa estabelecer uma conexão antes de chamar SQLGetConnectAttr. No entanto, se SQLGetConnectAttr for chamado e o atributo especificado não tiver padrão e não tiver sido definido por uma chamada anterior para SQLSetConnectAttr, SQLGetConnectAttr retornará SQL_NO_DATA.
Se o Atributo for SQL_ATTR_ TRACE ou SQL_ATTR_ TRACEFILE, o ConnectionHandle não precisa ser válido, e o SQLGetConnectAttr não retornará SQL_ERROR ou SQL_INVALID_HANDLE se o ConnectionHandle for inválido. Esses atributos se aplicam a todas as conexões. SQLGetConnectAttr retornará SQL_ERROR ou SQL_INVALID_HANDLE se outro argumento for inválido.
Embora uma aplicação possa definir atributos de instrução usando SQLSetConnectAttr, uma aplicação não pode usar SQLGetConnectAttr para recuperar valores de atributos de instrução; ele deve chamar SQLGetStmtAttr para recuperar a configuração dos atributos da instrução.
Tanto os atributos de conexão SQL_ATTR_AUTO_IPD quanto SQL_ATTR_CONNECTION_DEAD podem ser retornados por uma chamada para SQLGetConnectAttr , mas não podem ser definidos por uma chamada para SQLSetConnectAttr.
Note
Não há suporte assíncrono para SQLGetConnectAttr. Ao implementar SQLGetConnectAttr, um driver pode melhorar o desempenho ao minimizar o número de vezes que essas informações são enviadas ou solicitadas do servidor.
Funções relacionadas
| Para obter informações sobre | Veja |
|---|---|
| Retornando a configuração de um atributo de instrução | Função SQLGetStmtAttr |
| Definindo um atributo de conexão | Função SQLSetConnectAttr |
| Definindo um atributo ambiente | Função SQLSetEnvAttr |
| Configurando um atributo de instrução | Função SQLSetStmtAttr |