Forum Delphi.cz

Delphi => FireDAC => Téma založeno: Iken 06-04-2017, 21:08:33

Název: Firedac - vypnutí serveru
Přispěvatel: Iken 06-04-2017, 21:08:33
Ahoj všem,
mám aplikaci, která pro komunikaci se MySQL databází využívá knihovnu FireDac a komponentu FdConnection.

V případě, že po připojení Connected:=True vypnu server tak neproběhne událost AfterDisconnect jak bych očekával a když testuju Connected tak zůstává na True.

Asi nemám správně nastavenou komponentu FdConnection, aby to rozpadnutí bylo automaticky rozpoznáno, ale nevím jakou  :(

Díky moc za radu a nasměrování.
Iken
Název: Re:Firedac - vypnutí serveru
Přispěvatel: 96628 17-08-2017, 08:03:17
Neprobehne, protoze FireDAC neresi, zda je server v momente kdy neprobiha zadna komunikace mezi driverem a DBMS "online". Muze se ale pokusit spojeni sam obnovit (viz. Recovering Connection (http://docwiki.embarcadero.com/RADStudio/en/Recovering_Connection_(FireDAC))) pokud je to mozne, a dokaze o vypadku spojeni informovat v podobe vyjimky (viz. Handling Errors (http://docwiki.embarcadero.com/RADStudio/en/Handling_Errors_(FireDAC))), napr.:

Kód: Delphi [Vybrat]
  1. try
  2.   FDQuery.Open;
  3. except
  4.   on E: EFDDBEngineException do
  5.     if E.Kind = ekServerGone then
  6.     begin
  7.       ShowMessage('Server neni dostupny!');
  8.       ...
  9.     end
  10.     else
  11.       raise;
  12. end;

Connected je jen stavova property. Server se da v pripade zjisteni vypadku, nebo jen tak pro "dobry pocit" zjisteni "online" stavu otravovat metodou Ping (http://docwiki.embarcadero.com/Libraries/en/FireDAC.Comp.Client.TFDCustomConnection.Ping).