Compartilhar via


Função SQLDisconnect

de conformidade
Versão introduzida: Conformidade de padrões do ODBC 1.0: ISO 92

de Resumo do
SQLDisconnect fecha a conexão associada a um identificador de conexão específico.

Sintaxe

  
SQLRETURN SQLDisconnect(  
     SQLHDBC     ConnectionHandle);  

Argumentos

ConnectionHandle
[Entrada] Identificador de conexão.

Retorna

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE ou SQL_STILL_EXECUTING.

Diagnostics

Quando SQLDisconnect retorna SQL_ERROR ou SQL_SUCCESS_WITH_INFO, um valor SQLSTATE associado pode ser obtido chamando SQLGetDiagRec com um HandleType de SQL_HANDLE_DBC e um identificador de ConnectionHandle. A tabela a seguir lista os valores SQLSTATE normalmente retornados por SQLDisconnect e explica cada um deles no contexto dessa função; a notação "(DM)" precede as descrições de SQLSTATEs retornadas pelo Gerenciador de Driver. O código de retorno associado a cada valor SQLSTATE é SQL_ERROR, a menos que observado o contrário.

SQLSTATE Erro Descrição
01000 Aviso geral Mensagem informativa específica do driver. (A função retorna SQL_SUCCESS_WITH_INFO.)
01002 Erro de desconexão Ocorreu um erro durante a desconexão. No entanto, a desconexão foi bem-sucedida. (A função retorna SQL_SUCCESS_WITH_INFO.)
08003 Conexão não aberta (DM) A conexão especificada no argumento ConnectionHandle não estava aberta.
25000 Estado de transação inválido Havia uma transação em processo na conexão especificada pelo argumento ConnectionHandle. A transação permanece ativa.
HY000 Erro geral Ocorreu um erro para o qual não havia nenhum SQLSTATE específico e para o qual nenhum SQLSTATE específico à implementação foi definido. A mensagem de erro retornada por SQLGetDiagRec no buffer *MessageText 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.
HY008 Operação cancelada O processamento assíncrono foi habilitado para oConnectionHandle. A função foi chamada e antes de terminar de executar de função SQLCancelHandle foi chamada no ConnectionHandle. Em seguida, a função foi chamada novamente no ConnectionHandle.

A função foi chamada e, antes de terminar de executar SQLCancelHandle, foi chamada no ConnectionHandle de um thread diferente em um aplicativo multithread.
HY010 Erro de sequência de funções (DM) Uma função de execução assíncrona foi chamada para um StatementHandle associado ao ConnectionHandle e ainda estava em execução quando SQLDisconnect foi chamado.

(DM) Uma função de execução assíncrona (não esta) foi chamada para o ConnectionHandle e ainda estava em execução quando essa função foi chamada.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationsou SQLSetPos foi chamado para um StatementHandle associado ao ConnectionHandle e retornado SQL_NEED_DATA. Essa função foi chamada antes de os dados serem enviados para todos os parâmetros ou colunas de dados em execução.
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 baixas.
HY117 A conexão é suspensa devido ao estado de transação desconhecido. Somente funções desconectadas e somente leitura são permitidas. (DM) Para obter mais informações sobre o estado suspenso, consulte de função SQLEndTran .
HYT01 Tempo limite de conexão expirado O período de tempo limite da conexão expirou antes da fonte de dados responder à solicitação e a conexão ainda está ativa. O período de tempo limite da conexão é definido por meio SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 O driver não dá suporte a essa função (DM) O driver associado ao ConnectionHandle não dá suporte à função.
IM017 A sondagem está desabilitada no modo de notificação assíncrona Sempre que o modelo de notificação é usado, a sondagem é desabilitada.
IM018 SQLCompleteAsync não foi chamado para concluir a operação assíncrona anterior nesse identificador. Se a chamada de função anterior no identificador retornar SQL_STILL_EXECUTING e se o modo de notificação estiver habilitado, SQLCompleteAsync deverá ser chamado no identificador para realizar o pós-processamento e concluir a operação.

Comentários

Se um aplicativo chamar SQLDisconnect após SQLBrowseConnect retornará SQL_NEED_DATA e antes de retornar um código de retorno diferente, o driver cancelará o processo de navegação de conexão e retornará a conexão a um estado não conectado.

Se um aplicativo chamar SQLDisconnect enquanto houver uma transação incompleta associada ao identificador de conexão, o driver retornará SQLSTATE 25000 (estado de transação inválido), indicando que a transação está inalterada e a conexão está aberta. Uma transação incompleta é aquela que não foi confirmada ou revertida com SQLEndTran.

Se um aplicativo chamar SQLDisconnect antes de liberar todas as instruções associadas à conexão, o driver, depois de se desconectar com êxito da fonte de dados, liberará essas instruções e todos os descritores que foram explicitamente alocados na conexão. No entanto, se uma ou mais das instruções associadas à conexão ainda estiverem sendo executadas de forma assíncrona, SQLDisconnect retornará SQL_ERROR com um valor SQLSTATE de HY010 (erro de sequência de funções). Além disso, sqldisconnect liberará todas as instruções associadas e todos os descritores que foram explicitamente alocados na conexão, se a conexão estiver em um estado suspenso ou se sqlDisconnect tiver sido cancelada com êxito pelo SQLCancelHandle.

Para obter informações sobre como um aplicativo usa SQLDisconnect, consulte Desconectando de uma fonte de dados oude driver.

Desconectando de uma conexão em pool

Se o pool de conexões estiver habilitado para um ambiente compartilhado e um aplicativo chamar SQLDisconnect em uma conexão nesse ambiente, a conexão será retornada para o pool de conexões e ainda estará disponível para outros componentes usando o mesmo ambiente compartilhado.

Exemplo de código

Consulte de programa ODBC de exemplo, de função SQLBrowseConnect e de função SQLConnect.

Para obter informações sobre Ver
Alocando um identificador de função SQLAllocHandle
Conectando-se a uma fonte de dados de função SQLConnect
Conectando-se a uma fonte de dados usando uma cadeia de conexão ou caixa de diálogo função SQLDriverConnect
Executando uma operação de confirmação ou reversão de função SQLEndTran
Liberando um identificador de conexão de função SQLFreeConnect

Consulte Também

referência da API ODBC
arquivos de cabeçalho ODBC