web-dev-qa-db-de.com

Am besten prüfen Sie, ob die Spalte einen Nullwert zurückgibt (von der Datenbank zur .net-Anwendung)

Ich habe eine Tabelle mit einer DateTime-Spalte Die Spalte kann NULL-Werte haben

Jetzt verbinde ich mich über eine ODBC - Verbindung mit der Datenbank und hole den Wert in eine DataTable in .net/c #.

Ich kann es auf NULL überprüfen, indem ich gehe

if(String.IsNullOrEmpty(table.rows[0][0].ToString())
{
     //Whatever I want to do
}

Ist String.IsNullOrEmpty die richtige Methode zum Überprüfen auf Nullwerte.

28
soldieraman

Verwenden Sie DBNull.Value.Equals für das Objekt, ohne es in einen String zu konvertieren.

Hier ist ein Beispiel:

   if (! DBNull.Value.Equals(row[fieldName])) 
   {
      //not null
   }
   else
   {
      //null
   }
76
jball

Verwenden Sie einfach DataRow.IsNull. Es hat Überschreibungen, die einen Spaltenindex, einen Spaltennamen oder ein DataColumn-Objekt als Parameter akzeptieren.

Beispiel mit dem Spaltenindex:

if (table.rows[0].IsNull(0))
{
    //Whatever I want to do
}

Und obwohl die Funktion IsNull heißt, kann sie wirklich mit DbNull verglichen werden (was genau das ist, was Sie brauchen).


Was ist, wenn ich nach DbNull suchen möchte, aber keine DataRow habe? Verwenden Sie Convert.IsDBNull .

9
Mariano Desanze
System.Convert.IsDbNull][1](table.rows[0][0]);

IIRC, der (table.rows[0][0] == null) funktioniert nicht, da DbNull.Value != null;

3

row.IsNull ("column")

0
jspcal

Wenn wir EF verwenden und das Datenbankelement in while-Schleife lesen, dann

   using( var idr = connection, SP.......)
   {
       while(idr.read())
       {
          if(String.IsNullOrEmpty(idr["ColumnNameFromDB"].ToString())
          //do something
       }
   }
0
priyanka