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é)?
12 réponses
Si je comprends bien, cela devrait fonctionner pour vous
if (ds.Tables[0].Rows.Count == 0)
{
//
}
Vous n'avez pas à tester l'ensemble de données.
Fill()
méthode retourne le nombre de lignes ajoutées.
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
}
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);
}
nous pouvons vérifier le total de trois façons.
- si(ds != null)
- si(ds.Table.Nombre > 0)
- si(ds.Tableaux[0].Les lignes[0].Nombre > 0)
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)
{
//
}
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.
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");
}
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)
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
}
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");
}