Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Wie frage ich DBNull ab?


JüTho - Do 14.09.06 16:55
Titel: Wie frage ich DBNull ab?
Hallo,

ich verstehe nicht, wie ich den Inhalt eines Datenfelds auf DBNull abfragen kann (um die entsprechende Exception zu vermeiden):

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
DataRow dr = dcS.Rows.Find(Daten);
//  nur übergeben, wenn wirklich vorhanden
if (dr != null) {             
    //  t1 führt ggf. zum Wert DBNull
    Type t1 = dr[3].GetType();
    //  keine der folgenden Varianten funktioniert
    if (!(t1 is DBNull))
    //  if (dr[3] != null)
    //  if (dr[3] != DBNull)
    //  if (dr[3] != DBNull.Value)
        Pfad = (string)dr[3];
}

Entweder es gibt verschiedene Compiler-Fehler, oder es gibt eine Laufzeit-Exception.

Wie muss ich die if-Abfrage formulieren, damit die Pfad-Zuweisung nur ausgeführt wird, wenn die DataColumn dr[3] wirklich einen Inhalt hat (dass es sich dann um einen String handelt, kann ich voraussetzen)?

Danke! Jürgen

Moderiert von user profile iconKlabautermann: Code- durch C#-Tags ersetzt


schneegurke - So 17.09.06 00:12

Also ich glaube


C#-Quelltext
1:
2:
3:
4:
if (!dr.IsNull(3))
{
    Pfad = (string)dr[3];
}


müsste das richtige Ergebnis erzielen.


JüTho - Mo 18.09.06 11:00

user profile iconschneegurke hat folgendes geschrieben:
Also ich glaube

C#-Quelltext
1:
2:
3:
4:
if (!dr.IsNull(3))
{
    Pfad = (string)dr[3];
}

müsste das richtige Ergebnis erzielen.

Genau so ist es! Danke recht herzlich. Jürgen

PS. Es ist mir ja klar, dass an verschiedenen Stellen eine Methode auf eine 'übergeordnetete' Klasse zu richten und als Parameter ein Index anzugeben ist; ich bin aber nicht auf die Idee gekommen, dass DataColumn.IsNull über die entsprechende DataRow zu prüfen ist. Also laufe ich mit meiner Suche in der Doku in die Irre.