Forum Delphi.cz

Delphi => Obecné => Téma založeno: Wormik 16-06-2012, 14:43:20

Název: IBX komponenty a rekonexe k databazi, potazmo legalni ukonceni programu
Přispěvatel: Wormik 16-06-2012, 14:43:20
Presel jsem z Delphi 7 na Delphi XE a zjistil ze IBX komponenty maji stejny problem jako v dobe D7  :'(  a to je pokud je otevrena konexe na databazi (firebird 2.5) dojde k preruseni komunikace (napr odpojeni/pripojeni k siti) tak IBX komponenty vygeneruji nekolik neosetrenych vyjimek, ktere vetsinou nejdou ani odchytnout, uzivatele nuti k jejich odklikani a do ukonceni aplikace nejde uz novu s IBX nic delat... Proto se ptam jestli nedelam neco spatne divim ze ze by takovy zasadni BUG prezil az do dnes? :-\
Název: Re:IBX komponenty a rekonexe k databazi, potazmo legalni ukonceni programu
Přispěvatel: yamaco 16-06-2012, 17:43:08
Zdravím, osobně jsem IBX komponenty přestal používat před mnoha lety právě kvůli jejich chybovosti a "nevývoji". Ve všech svých aplikacích používám FIB Plus sadu (prokazatelně rychlejší přístup k datům než via IBX, řada nových užitečných metod) a kvalitní je i sada od Devartu (využívám jejich analogie pro MS SQL a Oracle).
Název: Re:IBX komponenty a rekonexe k databazi, potazmo legalni ukonceni programu
Přispěvatel: Mi.Chal. 16-06-2012, 17:57:21
tak IBX komponenty vygeneruji nekolik neosetrenych vyjimek, ktere vetsinou nejdou ani odchytnout, uzivatele nuti k jejich odklikani

něco podobného dělal třeba i standardní TClientSocket. U něj se to dalo vyřešit tak, že se odchytil nějaký jejich speciální event (OnError nebo tak nějak) a nastavil se errorCode na 0. Třeba to bude podobné?

a do ukonceni aplikace nejde uz novu s IBX nic delat... Proto se ptam jestli nedelam neco spatne divim ze ze by takovy zasadni BUG prezil az do dnes? :-\

podobně blbě se standardně chovaly TAdoQuery/TAdoConnection a spol. Ty zase mají nějaký parametr, který určuje, jestli se má připojení držet otevřené (jinak se to připojuje pokaždé znovu a je to pomalejší). V případě výpadku spojení se to už ale nebylo schopné připojit. Řešením bylo vypnout tu property (něco jako KeepConnection) a po úspěšném připojení zase nastavit.