Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   MySQL Dienst prüfen (https://www.delphipraxis.net/183677-mysql-dienst-pruefen.html)

strom 28. Jan 2015 08:02

MySQL Dienst prüfen
 
Hallo,
möchte prüfen ob der Server "MySQL" also der Dienst läuft.
Hier passiert leider nichts?

Delphi-Quellcode:
function ServiceGetStatus(sMachine, sService: PChar): DWORD;
   {******************************************}
   {*** Parameters: ***}
   {*** sService: specifies the name of the service to open
   {*** sMachine: specifies the name of the target computer
   {*** ***}
   {*** Return Values: ***}
   {*** -1 = Error opening service ***}
   {*** 1 = SERVICE_STOPPED ***}
   {*** 2 = SERVICE_START_PENDING ***}
   {*** 3 = SERVICE_STOP_PENDING ***}
   {*** 4 = SERVICE_RUNNING ***}
   {*** 5 = SERVICE_CONTINUE_PENDING ***}
   {*** 6 = SERVICE_PAUSE_PENDING ***}
   {*** 7 = SERVICE_PAUSED ***}
   {******************************************}
var
   SCManHandle, SvcHandle: SC_Handle;
   SS: TServiceStatus;
   dwStat: DWORD;
begin
   dwStat := 0;
   // Open service manager handle.
   SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT);
   if (SCManHandle > 0) then
   begin
     SvcHandle := OpenService(SCManHandle, 'MySQL', SERVICE_QUERY_STATUS);
     // if Service installed
     if (SvcHandle > 0) then
     begin
      ShowMessage('TEST'); // Zum testen
       // SS structure holds the service status (TServiceStatus);
       if (QueryServiceStatus(SvcHandle, SS)) then
         dwStat := ss.dwCurrentState;
       CloseServiceHandle(SvcHandle);
     end;
     CloseServiceHandle(SCManHandle);
   end;
   Result := dwStat;
end;

function ServiceRunning(sMachine, sService: PChar): Boolean;
begin
   Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, 'MySQL');
end;

baumina 28. Jan 2015 08:20

AW: MySQL Dienst prüfen
 
Meist läuft doch so ein mySQL-Dienst sowieso auf einem Server und nicht auf der Arbeitsstation. Dann wäre es sinnvoller einfach zu schauen ob die Connection klappt.

BadenPower 28. Jan 2015 08:31

AW: MySQL Dienst prüfen
 
Bist Du sicher, dass der Dienst "MySql" heisst?

Bei mir läuft einer der MySql-Dienste zum Beispiel unter "MySQL501".

DeddyH 28. Jan 2015 08:44

AW: MySQL Dienst prüfen
 
Beim Debuggen würde man merken, welche Bedingung nicht erfüllt wird, und könnte den Fehler mit GetLastError gezielt abfragen.

Sir Rufo 28. Jan 2015 08:52

AW: MySQL Dienst prüfen
 
Zitat:

Zitat von BadenPower (Beitrag 1288020)
Bist Du sicher, dass der Dienst "MySql" heisst?

Bei mir läuft einer der MySql-Dienste zum Beispiel unter "MySQL501".

Bei mir läuft sogar einer unter dem Namen "ErwinFroehlich" und "PeterLustig" habe ich auch schon gesehen :roll:

Der Servicename ist nicht in Stein gemeißelt sondern wird bei der Installation (des Dienstes) vom Benutzer/Installateur ;) festgelegt, sonst könnte auf einem Rechner auch nur eine MySQL-Server-Instanz laufen!

BadenPower 28. Jan 2015 10:50

AW: MySQL Dienst prüfen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1288026)
Bei mir läuft sogar einer unter dem Namen "ErwinFroehlich" und "PeterLustig" habe ich auch schon gesehen :roll:

Ach Gott bin ich altmodisch.

Ich benenne die die Dienste nach Versionsnummer und wenn zwei der gleiche Versionen laufen dann mit zusätzlichen Instanz-Index.

MySQL323
MySQL40
MySQL501
MySQL55_1
MySQL55_2
MySQL56

Aber so einen Dienst zu personalisieren geht mir dann doch etwas zu weit.
Es klingt dann etwas makaber wenn Du sagst "PeterLustig" hat sich aufgehängt.

strom 28. Jan 2015 11:30

AW: MySQL Dienst prüfen
 
Hallo,
oder einen ganz anderen Weg!

Wenn ich das Programm fertig habe, möchte ich ein Setup erstellen.

Als erstes soll:

MySQL Server 5.1 installiert werden,
dann soll die Tabelle erstellt werden,
dann erst das Setup von meinem Programm.

Kann ich dieses alle mit Setup Inno machen?
Oder was gibt es da noch?

Der schöne Günther 28. Jan 2015 11:35

AW: MySQL Dienst prüfen
 
Zitat:

Zitat von BadenPower (Beitrag 1288048)
Es klingt dann etwas makaber wenn Du sagst "PeterLustig" hat sich aufgehängt.

Deswegen sagt das System ja auch "Peter Lustig reagiert nicht" und nicht so etwas Schlimmes!

mkinzler 28. Jan 2015 11:49

AW: MySQL Dienst prüfen
 
Früher hiessen viele Rechner Elvis, weil man "elvis is alive" als witzig empfand.

Sir Rufo 28. Jan 2015 13:59

AW: MySQL Dienst prüfen
 
Ich wollte eher darauf hinaus, dass die Abfrage auf den Dienst mit dem Namen "MySQL" nicht falsch sein muss - allerdings auch nicht richtig. Eher muss man nach dem richtigen Dienstnamen fragen und der kann sein wie will.

BadenPower 28. Jan 2015 14:36

AW: MySQL Dienst prüfen
 
Zitat:

Zitat von Sir Rufo (Beitrag 1288071)
Ich wollte eher darauf hinaus, dass die Abfrage auf den Dienst mit dem Namen "MySQL" nicht falsch sein muss - allerdings auch nicht richtig. Eher muss man nach dem richtigen Dienstnamen fragen und der kann sein wie will.

Daher fragte ich ja auch, ob er sicher ist, dass der Dienst "MySQL" heisst.

Medium 28. Jan 2015 15:57

AW: MySQL Dienst prüfen
 
Zitat:

Zitat von strom (Beitrag 1288051)
[..] ein Setup erstellen.
[..]
MySQL Server 5.1 installiert werden,

Vorsicht! Sobald du dein Programm mit MySQL bundlest, werden dafür Lizenzgebühren fällig. Auch wenn du ohne libmysql.dll (sprich mit UniDAC o.ä.) zugreifst. Diskussionen zu dem nett gesagt "exotischen" Lizenzmodell von MySQL finden sich hier in der DP einige, mit der Thematik solltest du dich unbedingt vertraut machen.

DeddyH 28. Jan 2015 16:20

AW: MySQL Dienst prüfen
 
Richtig, ich würde sofern möglich auf MariaDB ausweichen, dann hat man keine Sorgen bezüglich Lizenzgebühren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz