SQL Verbindung Status inkl. Fehlermeldung

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von MK_CGN.

    SQL Verbindung Status inkl. Fehlermeldung

    Hallo zusammen,
    ich habe ein kleines Programm erstellt, mit dem ich Abfragen an einem SQL Server vornehmen kann.
    Jetzt habe ich in der Form ein StatusStrip eingefügt, um auch die Verbindung "verbunden/nicht verbunden" darzustellen.
    Funktioniert soweit auch.
    Wie kann man es nun erweitern - wenn die Verbindung nicht besteht - dass dann auch der Grund/Fehler angezeigt wird, z.B. Userberechtigung, Server down etc?

    Quellcode

    1. Dim Connection As New SqlConnection("SERVER=SERVERNAME;database=DB;Integrated Security=true")
    2. If ConnectionState.Open = 1 Then
    3. ToolStripStatusLabel2.Text = "verbunden"
    4. ... weiterer Quellcode wenn die Verbindung besteht
    5. Else
    6. ToolStripStatusLabel2.Text = "nicht verbunden" '<-- hier hätte ich dann gerne die weitere Fehleranzeige
    7. End If


    Über Rückmeldungen und Anregungen würde ich mich freuen.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MK_CGN“ ()

    Ich würde es jetzt mal so probieren - kann es aber erst morgen mit einem anderen User testen...

    Quellcode

    1. Try
    2. Dim Connection As New SqlConnection("SERVER=SERVERNAME;database=DB;Integrated Security=true")
    3. If ConnectionState.Open = 1 Then
    4. ToolStripStatusLabel2.Text = "verbunden"
    5. ... weiterer Quellcode wenn die Verbindung besteht
    6. Else
    7. End If
    8. Catch ex As SqlException
    9. ToolStripStatusLabel2.Text = "Nicht verbunden" + ex.Message
    10. End try


    kommt das so ungefähr hin?
    Das musst du entscheiden, ob das deinen Vorstellungen entspricht.
    Aber funktionieren wird es nicht, weil in dieser Zeile

    VB.NET-Quellcode

    1. If ConnectionState.Open = 1 Then
    liegt ein DenkFehler vor, der dafür sorgt, dass das immer True ergibt, auch wenn garantiert keine Connection vorhanden ist. Probiers bitte aus, und guck dann mal, ob du den Fehler selbst findest.



    Von dem TryCatch täte ich ebenfalls dringend abraten.
    Zum einen ist die Fehlermeldung falsch. Wenn etwa ungültiges Sql an den Server gesandt wird, dann wirft der eine SqlException, und dein User bekommt die Meldung, er sei nicht verbunden.
    Was definitiv falsch ist, und daher einen Mords-Zinnober an Fehlersuche verursachen kann, weil der Fehler eben keine fehlende Verbindung ist.
    Dringende Empfehlung: Lass die Finger von TryCatch.
    Eine Meldung auf einem ToolstripItem ist keine Fehlerbehandlung.
    Richtige Fehlerbehandlung zu coden ist extrem schwierung, und grad bei Db-Anwendungen meist völlig nutzlos.
    Weil was will man mit einer Db-Anwendung, bei der der Db-Zugriff fehlschlägt?
    Alles was man da machen kann ist, die Anwendung schließen.
    Es gibt noch viel mehr dazu zu sagen, gugge: TryCatch ist ein heißes Eisen
    @Erfinder des Rades.
    Du hast natürlich mal wieder Recht, dassas mit try and catch nicht so elegant und eventuell auch nicht sinnvoll ist.
    Meine Idee war eigentlich dem Anwender ersichtlich zu machen, ob die Verbindung zur DB steht oder ob diese nicht existiert.
    Vielleicht kennst du eine elegantere Lösung.
    Also meine DB Anwendungen haben immer nur temporär eine „Verbindung zum SQL-Server“. Und zwar dann, wenn ich eine Abfrage machen.

    Heißt:
    1. Verbindung öffnen
    2. Abfrage machen
    3. Verbindung schließen
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    docs.microsoft.com/de-de/dotne…ate?view=netframework-4.8
    Value von Connectionstate.Open ist immer 1 ! ;)

    ErfinderDesRades schrieb:

    ... und guck dann mal, ob du den Fehler selbst findest.


    Die Wichtigste Info wird mal wieder nicht beachtet. :S