Comment tester si un ensemble de données est vide?

je modifie le code de quelqu'un d'autre où une requête est effectuée en utilisant ce qui suit:

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);

Comment puis-je savoir si l'ensemble de données est vide (c'est-à-dire qu'aucun résultat n'a été retourné)?

40
demandé sur MCS 2010-06-04 21:41:12

12 réponses

Si je comprends bien, cela devrait fonctionner pour vous

if (ds.Tables[0].Rows.Count == 0)
{
    //
}
55
répondu rosscj2533 2010-06-04 17:44:25

Vous n'avez pas à tester l'ensemble de données.

Fill() méthode retourne le nombre de lignes ajoutées.

Voir DbDataAdapter.Méthode De Remplissage (DataSet)

19
répondu Tom 2014-11-05 15:38:10

Ce n'est pas une réponse valable, car il donne d'erreur suivant

impossible de trouver la table 0.

Utilisez l'énoncé suivant à la place de

if (ds.Tables.Count == 0)
{
     //DataSet is empty
}
16
répondu captainsac 2015-05-19 12:01:45

vous devriez boucler toutes les tables et tester si table.Rangée.Le compte est à 0!--5-->

bool IsEmpty(DataSet dataSet)
{
    foreach(DataTable table in dataSet.Tables)
        if (table.Rows.Count != 0) return false;

    return true;
}

mise à jour: Puisqu'un DataTable peut contenir des lignes supprimées RowState = Deleted, selon ce que vous voulez accomplir, il pourrait être une bonne idée de vérifier le DefaultView à la place (qui ne contient pas de lignes supprimées).

bool IsEmpty(DataSet dataSet)
{
    return !dataSet.Tables.Cast<DataTable>().Any(x => x.DefaultView.Count > 0);
}
14
répondu Jürgen Steinblock 2015-07-27 05:50:26

nous pouvons vérifier le total de trois façons.

  1. si(ds != null)
  2. si(ds.Table.Nombre > 0)
  3. si(ds.Tableaux[0].Les lignes[0].Nombre > 0)
4
répondu prabhakar changala 2015-03-25 11:52:42

ce code affichera une erreur comme Table[0] can not be found! parce qu'il n'y aura pas de table en position 0.

if (ds.Tables[0].Rows.Count == 0)
{
    //
}
1
répondu Subhash PM 2014-11-11 13:47:23
 MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
 DataSet ds = new DataSet();
 adap.Fill(ds);
 if (ds.Tables[0].Rows.Count == 0)
 {
      MessageBox.Show("No result found");
 }

requête recevra les données dans l'ensemble de données, puis nous allons vérifier le jeu de données est-il vide ou disposer de certaines données. pour que nous ne ds.tableaux[0].Rangée.Nombre = = o cela comptera le nombre de lignes qui sont dans l'ensemble de données. Si la condition ci-dessus est vraie, alors l'ensemble de données ie ds est vide.

0
répondu NomanJaved 2015-01-15 18:00:05

N'oubliez pas de définir le nom de la table da.Fill (ds, "tablename");

ainsi vous retournez des données en utilisant le nom de la table au lieu de 0

if (ds.Tables["tablename"].Rows.Count == 0)
 {
  MessageBox.Show("No result found");
 }
0
répondu Salem Ahmed 2016-06-23 10:20:19

lorsque je renvoie les résultats D'une requête SQL, je trouve que les tables [0] existent, mais qu'elles ont zéro ligne. Donc, dans ma situation, cela a fonctionné:

si (ds.Tableaux[0].Rangée.Count == 0) / / empty

Cela ne fonctionne pas:

si (ds.Table.Count = = 0)

0
répondu James Grigley 2016-08-12 13:44:51

pour vérifier que l'ensemble de données est vide ou pas, vous devez cocher null et les tables comptent.

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);
if(ds != null && ds.Tables.Count > 0)
{
 // your code
}
0
répondu Munavvar 2016-09-02 07:10:56

Fill la commande is renvoie toujours le nombre d'enregistrements insérés dans dataset.

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
var count = da.Fill(ds);
if(count > 0)
{
   Console.Write("It is not Empty");
}
0
répondu Natarajan Ganapathi 2017-01-10 06:16:13
If (ds != null)

Devrait faire le travail pour vous!

-3
répondu Sandesjøl 2014-03-10 15:01:37