Função SQLDisconnect
Conformidade
Versão introduzida: Conformidade com as normas ODBC 1.0: ISO 92
Resumo
SQLDisconnect fecha a conexão associada a um identificador de conexão específico.
Sintaxe
SQLRETURN SQLDisconnect(
SQLHDBC ConnectionHandle);
Argumentos
ConnectionHandle
[Entrada] Alça de conexão.
Devoluções
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR, SQL_INVALID_HANDLE ou SQL_STILL_EXECUTING.
Diagnóstico
Quando
SQLSTATE | Erro | Descrição |
---|---|---|
01000 | Advertência geral | Mensagem informativa específica do motorista. (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 | Ligaçã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 SQLSTATE específico e para o qual nenhum SQLSTATE específico de implementação foi definido. A mensagem de erro retornada por |
HY001 | Erro de alocação de memória | O driver não pôde alocar a memória necessária para suportar a execução ou conclusão da função. |
HY008 | Operação cancelada | O processamento assíncrono foi habilitado para o ConnectionHandle. A função foi chamada e, antes de terminar de executar 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ção | (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 retornou SQL_NEED_DATA. Esta 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 pouca memória. |
HY117 | A conexão é suspensa devido ao estado desconhecido da transação. Apenas as 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. |
HYT01 | O tempo limite de conexão expirou | O período de tempo limite de conexão expirou antes que a fonte de dados respondesse à 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 | Driver não suporta esta função | (DM) O driver associado ao ConnectionHandle não suporta a função. |
IM017 | A sondagem está desativada no modo de notificação assíncrona | Sempre que o modelo de notificação é usado, a sondagem é desativada. |
IM018 | SQLCompleteAsync não foi chamado para concluir a operação assíncrona anterior neste 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 fazer o pós-processamento e concluir a operação. |
Observações
Se um aplicativo chamar SQLDisconnect depois que SQLBrowseConnect retornar SQL_NEED_DATA e antes que ele retorne um código de retorno diferente, o driver cancelará o processo de navegação da 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ção). Além disso,
Para obter informações sobre como um aplicativo usa SQLDisconnect, consulte Desconectando de uma fonte de dados ou 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 ao 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 .
Funções relacionadas
Para obter informações sobre | Ver |
---|---|
Alocando uma alça | de função SQLAllocHandle |
Conectando-se a uma fonte de dados | da função SQLConnect |
Conectando-se a uma fonte de dados usando uma cadeia de conexão ou caixa de diálogo | da função SQLDriverConnect |
Executando uma operação de confirmação ou reversão | Função SQLEndTran |
Liberando uma alça de conexão | da função SQLFreeConnect |
Ver também
de referência da API ODBC
Arquivos de cabeçalho ODBC