Delphi + dbExpress + MySQL - sprawdzanie połączenia

0

Witam,

tworzę aplikację korzystającą z MySQL za pomocą DbExpress. Obecnie sprawdzanie wykonałem w poniższy sposób, uruchamiany w on Create.

 try
    MySQL.Connected:=True;
    except
    if MySQL.Connected=False then
        begin
          Application.MessageBox('Połączenie z bazą danych jest niemożliwe. Program zostanie zamknięty.', 'Błąd komunikacji', MB_OK + MB_ICONInformation);
          Form1.Close
        end
      else
      MySQL.Connected:= False;

Niby coś działa, ale Po wyświetleniu mojego komunikatu, coś jeszcze miele i wyrzuca błąd windowsa o błędzie komunikacji z bazą, co jest jeszcze ważne, okno programu nie pokazuje się, ale w Menedżerze Zadań aplikacja ciągle widnieje jako włączona. Teraz moje pytanie, jak to poprawnie wykonać, żeby już po moim komunikacie nie wyrzucało innych i żeby aplikacja się zamykała.

Pozdrawiam
Tomek

0

Nawet _13th_Dragon nie pomoże ?:)

Pozdrawiam

0

Może:

Application.Terminate;

albo

Halt;
0

Cześć,

tych poleceń też próbowałem, ale efekt jest taki sam, zamknięty program nie znika z menedżera zadań. Nie wiem czy w dobrą stronę idzie moje myślenie ale czy w onCreate mogę już zamknąć formę jak jeszcze ona się nie "wytworzyła"?

0
try
  MySQL.Connected:=True;
except
  Application.MessageBox('Połączenie z bazą danych jest niemożliwe. Program zostanie zamknięty.', 'Błąd komunikacji', MB_OK + MB_ICONInformation);
  Application.Terminate;
  exit;
end;
0

A co masz wpisane w OnClose że Ci mieli zamiast zamknąć program? Użyj ExitProcess

0

Wstawiam gotową sprawdzoną procedurę która zwraca True jeśli połączenie z bazą jest ok. Najlepiej ją wykonywać przed każdym poleceniem

Function KeepConnection: Boolean;
Begin
  Result := True;
  Try
    Data.SQL.Clear;
    Data.SQL.Add('select CURRENT_DATE');
    Data.ExecSQL;
  Except
    Try
      SQL.Disconnect;
      SQL.Connect;
    Except
      Result := False;
    End;
  End;
  Data.SQL.Clear;
End;
0

W onClose nie miałem nic, podpowiedź Pawła Dmitruka była pomocna, po tym zestawie poleceń program zamyka się prawidłowo w przypadku braku połączenia. Dziękuję za podpowiedź. Temat można zamknąć.

1 użytkowników online, w tym zalogowanych: 0, gości: 1