Delphi + dbExpress + MySQL - sprawdzanie połączenia

Delphi + dbExpress + MySQL - sprawdzanie połączenia
SP
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 12 lat
  • Postów:8
0

Witam,

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

Kopiuj
 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

edytowany 1x, ostatnio: flowCRANE
SP
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 12 lat
  • Postów:8
0

Nawet _13th_Dragon nie pomoże ?:)

Pozdrawiam

Patryk27
Użyj @nick, by go tutaj wezwać ;P
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
0

Może:

Kopiuj
Application.Terminate;

albo

Kopiuj
Halt;

SP
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 12 lat
  • Postów:8
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"?

PD
  • Rejestracja:ponad 22 lata
  • Ostatnio:20 minut
0
Kopiuj
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;

pozdrawiam
paweld
TW
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 12 lat
  • Postów:48
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

Kopiuj
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;
SP
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 12 lat
  • Postów:8
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ąć.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.