web-dev-qa-db-fra.com

Meilleure façon de vérifier si la colonne renvoie une valeur NULL (de la base de données à l'application .net)

J'ai une table avec une colonne DateTime La colonne peut avoir des valeurs NULL

Maintenant, je me connecte à la base de données à l'aide d'une connexion ODBC et récupère la valeur dans un DataTable au format .net/c #.

Je suis capable de vérifier pour NULL en allant

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

String.IsNullOrEmpty est-il le bon moyen de vérifier les valeurs NULL?.

28
soldieraman

Utilisez DBNull.Value.Equals sur l’objet sans le convertir en chaîne.

Voici un exemple:

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

Utilisez simplement DataRow.IsNull. Il comporte des substitutions acceptant un index de colonne , un nom de colonne ou un objet DataColumn en tant que paramètres.

Exemple utilisant l'index de colonne:

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

Et bien que la fonction s'appelle IsNull, elle se compare vraiment à DbNull (ce qui est exactement ce dont vous avez besoin).


Et si je veux vérifier DbNull mais que je n'ai pas de DataRow? Utilisez Convert.IsDBNull .

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

IIRC, le (table.rows[0][0] == null) ne fonctionnera pas, car DbNull.Value != null;

3
Marcin Seredynski

row.IsNull ("colonne")

0
jspcal

Si nous utilisons EF et lisons l'élément de base de données dans la boucle while,

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