53 votes

Comment vérifier un DataTable vide

J'ai un DataSet où je dois savoir combien de lignes ont été modifiées à l'aide du code suivant :

 dataTable1 = dataSet1.Tables["FooTable"].GetChanges();

foreach (DataRow dr in dataTable1)
{
  // ...
}

DataSet a DataSet.HasRow mais DataTable n'a pas une telle méthode. S'il n'y a pas de lignes modifiées. changesDT1 sera une valeur nulle, ce qui entraînera la levée d'une exception par la boucle.

Comment vérifier si DataTable est vide ? J'ai essayé Rows.Count - ça ne marche pas...

73voto

Pranay Rana Points 69934

Assurez-vous d'abord que DataTable n'est pas null et vérifiez le nombre de lignes

 if(dt!=null)
{
  if(dt.Rows.Count>0)
  {
    //do your code 
  }
}

50voto

Ben Robinson Points 14558

Si dataTable1 est nul, ce n'est pas une table de données vide.

Enveloppez simplement votre foreach dans une instruction if qui vérifie si dataTable1 est null. Assurez-vous que votre foreach compte plus de DataTable1.Rows ou vous obtiendrez une erreur de compilation.

     if (dataTable1 != null)
    {
       foreach (DataRow dr in dataTable1.Rows)
       {
          // ...
       }
    }

27voto

C.Poh Points 334

Normalement, lorsque vous interrogez une base de données avec SQL, puis remplissez une table de données avec ses résultats, ce ne sera jamais une table de données nulle. Vous avez les en-têtes de colonne remplis d'informations de colonne même si vous avez renvoyé 0 enregistrement. Lorsqu'on a essayé de traiter une table de données avec 0 enregistrement mais avec des informations de colonne, cela lèverait une exception. Pour vérifier la table de données avant de traiter, on pourrait vérifier comme ceci.

 if (DetailTable != null && DetailTable.Rows.Count>0)

4voto

V4Vendetta Points 15354

À partir de MSDN pour GetChanges

Une copie filtrée du DataTable sur laquelle des actions peuvent être exécutées, puis fusionnée ultérieurement dans le DataTable à l'aide de Merge. Si aucune ligne du DataRowState souhaité n'est trouvée, la méthode renvoie Nothing (null) .

dataTable1 est nul, il suffit donc de vérifier avant d'itérer dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X