Domanda

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

Non c'è niente di meglio che inviare un " inutile " istruzione sql ogni volta solo per vedere se viene generata un'eccezione? Come ti assicuri che la tua connessione sia aperta prima di usarla?

È stato utile?

Soluzione

Nel tuo caso, farei quanto segue:

  1. Non preoccuparti di essere sicuro che la connessione sia " veramente " apri PRIMA di usarlo: sarà la maggior parte delle volte comunque, e risparmierai molti viaggi di andata e ritorno inutili sul server
  2. MA verifica eventuali eccezioni ogni volta che usi la connessione (crea metodi di supporto per evitare copia / incolla qui)
  3. Se hai un'eccezione, invia il tuo " inutile " dichiarazione per verificare la connessione al database "reale" stato. Lo farei perché il tipo di eccezioni che puoi ottenere quando si perde la connessione al server a volte può essere abbastanza sorprendente (a seconda di ciò che sta accadendo nel momento in cui la connessione viene interrotta)

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top