Il modo migliore per verificare lo stato di OleDbConnection

Apparentemente ( MSDN ) a volte OleDbConnection.ResetState () non fa nulla, quindi anche se la connessione fallisce, OleDbConnection.State sarà comunque impostato su Open. Sto cercando il miglior rimedio per questo, in modo che quando controllo lo stato della connessione posso evitare di sollevare eccezioni (purché la connessione non abbia fallito tra l’ultimo controllo e il tentativo di utilizzo).

Non c’è niente di meglio che inviare una istruzione sql “inutile” ogni volta solo per vedere se viene lanciata un’eccezione? Come ti assicuri che la tua connessione sia aperta prima di usarla effettivamente?

Nel tuo caso, farei quanto segue:

  1. Non preoccuparti di essere sicuro che la connessione sia “veramente” aperta PRIMA di usarla: sarà comunque la maggior parte del tempo, e risparmierai un sacco di roundtrip inutili sul server
  2. MA controlla eventuali eccezioni ogni volta che usi la connessione (crea metodi di supporto per evitare copia / incolla qui)
  3. Se hai un’eccezione, invia la tua istruzione “inutile” per verificare lo stato “reale” della connessione al database. Lo farei perché il tipo di eccezioni che puoi ottenere quando la connessione al server è persa a volte può essere abbastanza sorprendente (dipende da cosa sta accadendo nel momento in cui la connessione è interrotta)

Spero che questo ti aiuti.