Um zu testen, ob ich mich mit meiner Datenbank verbinden kann, führe ich den folgenden Code aus:
%Vor%Dies funktioniert, außer dass es eine Ausnahme auslöst, wenn die Verbindung fehlgeschlagen ist. Gibt es eine andere Möglichkeit, eine SQL-Verbindung zu testen, die keine Ausnahme auslöst?
Bearbeiten: Um Genauigkeit hinzuzufügen, frage ich, ob es eine einfache Methode gibt, die das macht, ohne die Verbindung zu öffnen und Ausnahmen zu erfassen, die auftreten können
Beim Versuch, eine Verbindung zu öffnen, gibt es keine Möglichkeit, die Ausnahme zu vermeiden, wenn die Verbindung nicht geöffnet werden kann. Es kann irgendwo in einer Funktion versteckt werden, aber Sie werden die Ausnahme bekommen, egal was passiert.
Es wurde so entworfen, weil Sie normalerweise eine Verbindung zur Datenbank herstellen können. Eine fehlgeschlagene Verbindung ist die Ausnahme .
Sie können den aktuellen Verbindungsstatus jederzeit testen, indem Sie die State
-Eigenschaft überprüfen.
Wenn es eine Ausnahme auslöst und Sie in Ihrem catch-Block damit umgehen, wissen Sie bereits, dass die Verbindung fehlgeschlagen ist. Ich denke, du hast deine eigene Frage beantwortet.
Ich denke, die wirkliche Antwort hier ist Ping.
%Vor%Wenn Sie nicht ausdrücklich überprüfen, ob eine SQL-Verbindung möglich ist, sollten Sie wissen, ob etwas ein SQL-Server ist. Dies würde Ihnen die unangenehme Speicherauslastung einer Ausnahme ersparen, auf die ich wirklich wetten möchte.
Sie können immer die Klasse ConnectionStringBuilder
verwenden und nach dem Vorhandensein jedes Stücks suchen, das für eine Verbindungszeichenfolge erforderlich ist, bevor Sie versuchen, es zu öffnen.
Wenn die Verbindungszeichenfolge korrekt ist, aber der Datenbankserver, mit dem Sie eine Verbindung herstellen, inaktiv ist, erhalten Sie trotzdem eine Ausnahme. Es ist sinnlos, die Qualität der Zeichenfolge zu überprüfen, wenn der Endpunkt, zu dem Sie eine Verbindung herstellen, möglicherweise offline ist.
Sie können nicht vermeiden, dass beim Verbinden der Datenbank eine Ausnahme auftritt, aber Sie haben eine Funktion, die das sehr gut beherrscht. Ich verwende diese Funktion, die wahr zurückgibt, wenn Verbindung besteht.
%Vor%Tags und Links c# exception sqlconnection