sprawa wyglada tak:
lacze sie z baza postgres za pomoca ADO przez provider dla ODBC czyli ADO->ODBC->postgres.
przykladowy problem:
try
{
// tu wykonujemy jakies zapytanie, dowolne
}
catch(EOleException& ex)
{
// cos sie nie udalo wiec sprawdzamy co jest grane
ShowMessage(ex.ErrorCode);
}
w jaki sposob w bloku catch moge sprawdzic to ze zapytanie nie udalo sie bo np padl serwer bazy danych?
nie wazne jaki jest powod bledu (bledne,zapytanie,brak polacznie...) kod bledu zawsze jest taki sam i rowny -2147467259 co w opisie bledow OLE-DB oznacza blad niezdefiniowany. zawsze ten sam kod!
obsluga zdazen AfterDisconnect czy OnDisconnect nic nie da bo one dzialaja tylko wtedy gdy sam rozlacze baze. gdy to serwer padnie to zdarzenia te nie maja miejsca, malo tego gdy sprawdze stan obiektu polaczenia to wykazuje on ze polaczenie jest ciagle nawiazane.
w obiekcie wyjatku dostaje poprawny komunikat (np brak polaczenia, zle zapytanie itd) ale kod bledu jest ten sam. jak zatem moge sprawdzic ze winowajca jest zerwane polaczeni(np reset serwera) i ponowanie prubowac nawiazac polaczenie.
nie chec za kazdym wyjatkiem nawiazywac polaczenia na nowo bo w 90% przypadku nie bedzei takiej potzreby.