Je modifie le code de quelqu'un d'autre lorsqu'une requête est effectuée à l'aide de ce qui suit:
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);
Comment savoir si le DataSet est vide (aucun résultat n’a été renvoyé)?
Si je comprends bien, cela devrait fonctionner pour vous
if (ds.Tables[0].Rows.Count == 0)
{
//
}
Vous n'êtes pas obligé de tester l'ensemble de données.
La méthode Fill()
renvoie le nombre de lignes ajoutées.
Ce n'est pas une réponse valide car cela donne l'erreur suivante
Impossible de trouver la table 0.
Utilisez plutôt l'instruction suivante
if (ds.Tables.Count == 0)
{
//DataSet is empty
}
Vous devriez parcourir toutes les tables et tester si table.Rows.Count est 0
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
, en fonction de ce que vous voulez accomplir, il peut être judicieux de vérifier la DefaultView
(qui ne contient pas de lignes supprimées).
bool IsEmpty(DataSet dataSet)
{
return !dataSet.Tables.Cast<DataTable>().Any(x => x.DefaultView.Count > 0);
}
Ce code affichera une erreur du type Table[0] can not be found!
.__ car il n’y aura pas de table en position 0.
if (ds.Tables[0].Rows.Count == 0)
{
//
}
Pour vérifier si l'ensemble de données est vide ou non.
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);
if(ds != null && ds.Tables.Count > 0)
{
// your code
}
En renvoyant les résultats d'une requête SQL, je constate que les tables [0] existent, mais qu'il n'y a aucune ligne. Donc, dans ma situation, cela a fonctionné:
if (ds.Tables [0] .Rows.Count == 0) // vide
Cela n'a pas fonctionné:
if (ds.Tables.Count == 0)
Fill
sa commande retourne toujours le nombre d'enregistrements insérés dans l'ensemble de données.
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
var count = da.Fill(ds);
if(count > 0)
{
Console.Write("It is not Empty");
}
MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adap.Fill(ds);
if (ds.Tables[0].Rows.Count == 0)
{
MessageBox.Show("No result found");
}
query recevra les données dans le jeu de données, puis nous vérifierons le jeu de données vide ou contenant des données. pour cela nous faisons ds.tables [0] .Rows.Count == o Cela comptera le nombre de lignes contenues dans le jeu de données. Si la condition ci-dessus est vraie, l'ensemble de données, c.-à-d. Ds, est vide.
N'oubliez pas de définir le nom de la table da.Fill (ds, "nomtable");
Donc, 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");
}