NULL-Wert-Erkennung funktioniert nicht

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von JensC..

    NULL-Wert-Erkennung funktioniert nicht

    Guten Tag,

    ich lese per VB2008 Adressdaten aus einer MySQL-Datenbank. Das DataGridView, welches alle Adressen in einer Liste anzeigt, kommt mit Null-Werten klar. Gehe ich nun in die Detailansicht, in der alle Daten mit der Hilfe von Labels angezeigt werden, kommt eine Exception. Ich habe darauf hin eine Funktion geschrieben, die Null-Werte erkennen soll und sie ggf. ersetzt.

    Das Problem ist, dass ich es nicht zum Laufen bekomme.

    Damit hole ich mir die Daten in das Label. Es funktioniert auch, jedoch
    sind keine NULL-Werte zulässig:

    VB.NET-Quellcode

    1. Labelname.Text = myData.GetString("Vorname") + " " + myData.GetString("Nachname")


    Ergo schrieb ich folgende Funktion:

    VB.NET-Quellcode

    1. Public Function IfNull(ByVal value As Object, Optional ByVal NullValue As Object = "") As Object
    2. If IsDBNull(value) = True Then
    3. Return NullValue
    4. Else
    5. Return value
    6. End If
    7. End Function


    Aufgerufen wird diese Funktion durch:

    VB.NET-Quellcode

    1. Labelname.Text = IfNull(myData.GetString("Vorname")) + " " + IfNull(myData.GetString("Nachname"))


    Es werden aber nach wie vor NULL-Werte durchgelassen und es kommt zu einer Exception. Meine Vermutung ist, dass ich an der falschen Stelle die NULL-Werte umwandle. Bin aber mit meinem Latein am Ende.

    Ich habe auch versucht mit dem SQL-Syntax NULL-Werte umzuwandeln. Da hat mein Kopf aber mit dem Qualmen angefangen, weil ich mich da total verfranzt habe im Kopf.

    Hat jemand einen Codefetzen für mich?

    Dankeschön.
    Nur eine Kleinigkeit...
    Du verkomplizierst deinen Null Check unnötig.
    Das lässt sich viel übersichtlicher gestalten.

    Statt:

    VB.NET-Quellcode

    1. Public Function IfNull(ByVal value As Object, Optional ByVal NullValue As Object = "") As Object
    2. If IsDBNull(value) = True Then
    3. Return NullValue
    4. Else
    5. Return value
    6. End If
    7. End Function


    Versuch mal:

    VB.NET-Quellcode

    1. Public Function IfNull(ByVal value As Object) As Object
    2. If IsDBNull(value) Then 'Ohne true. Ergebnis ist das gleiche
    3. Return Nothing 'es wird auch NULL zurück gegeben aber verträglich für ein Text Property ;)
    4. Else
    5. Return value
    6. End If
    7. End Function
    Also das Problem betrifft anscheinend myData.GetString(), darauf wird bei der Fehlermeldung verwiesen. Jetzt habe ich etwas recherchiert und herausgefunden, dass GetString() nicht in der Lage ist, mit NULL-Werten umzugehen.

    Das heißt, die bisherige Funktion setzt zu spät ein. Ich muss schon im Reader den NULL-Wert abfangen und ersetzen.

    Folgendes habe ich jetzt hier stehen. Aber ich weiß nicht, wie es weitergeht. In Google konnte ich nur Lösungen finden, um einzelne Spalten auf NULL zu überprüfen. Wie das mit dem gesamten Datensatz geht (Name, Vorname, Strasse, Hausnummer, Telefon, etc.), konnte ich noch nicht herausfinden.

    VB.NET-Quellcode

    1. While myData.Read()
    2. If myData.IsDBNull(1) Then
    3. Else
    4. End If
    5. End While


    Was fehlt mir zum Erfolg bzw. ist der Code überhaupt richtig?