Pergunta

Aparentemente ( MSDN ) às vezes OleDbConnection.ResetState () não faz nada, por isso mesmo se a conexão falhar OleDbConnection.State ainda vai ser definido para Abrir. Estou à procura de melhor solução para este, de modo que quando eu verificar o estado da conexão eu posso evitar o aumento de exceções (desde que ligação não falhou entre a última verificação e tentativa de uso).

Não há nada melhor do que o envio de uma instrução SQL "inútil" cada vez só para ver se uma exceção é lançada? Como você verificar se a conexão está aberta antes de realmente usá-lo?

Foi útil?

Solução

No seu caso eu faria o seguinte:

  1. Não se preocupe em estar certo se a conexão é "realmente" abertos antes de usá-lo: será maior parte do tempo de qualquer maneira, e você vai poupar um monte de idas e voltas inúteis para o servidor
  2. Mas verifique qualquer excepção cada vez que você usar a conexão (criar auxiliares métodos para copiar evitar / colar aqui)
  3. Se você tem uma exceção, em seguida, enviar a sua declaração de "inútil" para verificar a conexão de banco de dados estado "real". Eu faria isso porque o tipo de exceções que você pode começar quando a conexão com o servidor é perdida às vezes pode ser bastante surpreendente (dependendo do que está acontecendo no momento que a ligação é interrompida)

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top