Verbindung zu einem SQL-Server in einem Timer prüfen



  • Wie kann ich in einem Timer überprüfen, ob eine Verbindung zu einem SQL Server besteht?
    Ich habe zuvor eine Verbindung über ADO aufgebaut.



  • mach doch einfach eine kleine Abfrage auf die Datenbank, am besten auf ne Tabelle mit wenig Daten oder einfach die Systemzeit der Datenbank abfragen (select GetDate()), wenn die Abfrage ein Ergebnis liefert ist die Verbindung noch vorhanden



  • Ok, das ist schonmal ne Variante...gibt scheinbar keine Funktion GetDBState oder sowas. Danke schonmal!



  • Ich hatte mal das gleiche Problem und habe das auch ueber einen Timer gelöst, der dann mein Programm in den Offline-Modus setzt solange keine DB verfuegbar ist.

    Die ADO Komponente aber die muss eigentlich auch so ein Methode wie ( IsOpen, Connected,..) besitzen.

    Bsp: ODAC Komponente (Fremdanbieter fuer Oracle Server)

    bool __fastcall TCConnection::isAlive()
    {
    return OraSession->Connected;
    }



  • Ich habe das jetzt mal mit der property "Connected" versucht. Die liefert allerdings, wenn ich zu Beginn eine Verbindung aufgebaut habe, immer true zurück, selbst, wenn ich den SQL-Server manuell auf "Stop" gesetzt habe.

    if (ADOConnection->Connected)
    {
        return true;
    }
    else
    {
        return false;
    }
    

    Woran liegt das?



  • Weil Du die Verbindung nicht nutzt. Siehe Linneas Beitrag.


Anmelden zum Antworten