2009-03-09 10 views
8

Podobno (MSDN) czasami OleDbConnection.ResetState() nie robi nic, więc nawet jeśli połączenie nie powiedzie się OleDbConnection.State nadal będzie ustawione na Open. Szukam najlepszego sposobu obejścia tego problemu, więc gdy sprawdzę stan połączenia, mogę uniknąć zgłaszania wyjątków (o ile połączenie nie zakończyło się niepowodzeniem między ostatnim sprawdzeniem a próbą użycia).Najlepszy sposób sprawdzenia stanu OleDbConnection

Czy nie ma nic lepszego niż wysyłanie "bezużytecznych" instrukcji SQL za każdym razem, aby sprawdzić, czy wyjątek został zgłoszony? Jak upewnić się, że twoje połączenie jest otwarte, zanim faktycznie go użyjesz?

+0

To naprawdę dobre pytanie. –

+0

@Robert - To naprawdę jest! –

Odpowiedz

5

W twoim przypadku chciałbym wykonać następujące czynności:

  1. Nie przejmuj będąc pewien, czy połączenie jest „naprawdę” otwarty przed użyciem go: to będzie przez większość czasu tak czy inaczej, a ty będziesz zaoszczędzić wiele niepotrzebnych połączeń z serwerem
  2. BUT sprawdzić za każdy wyjątek za każdym razem, gdy używasz połączenia (tworzenie metod pomocnika, aby uniknąć kopiowania tutaj)
  3. Jeśli masz wyjątek, następnie wyślij swoje "bezużyteczne" oświadczenie sprawdzić stan połączenia "stan rzeczywisty" połączenia z bazą danych. Zrobiłbym to, ponieważ typ wyjątków, które można uzyskać po utracie połączenia z serwerem, może czasami być dość zaskakujący (w zależności od tego, co dzieje się w momencie zerwania połączenia).

Mam nadzieję, że to pomoże.

Powiązane problemy