web-dev-qa-db-de.com

Wie teste ich, ob ein DataSet leer ist?

Ich ändere den Code einer anderen Person, wenn eine Abfrage mit folgendem Befehl ausgeführt wird:

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

Wie kann ich feststellen, ob das DataSet leer ist (d. H. Es wurden keine Ergebnisse zurückgegeben)?

42
MCS

Wenn ich es richtig verstanden habe, sollte dies für Sie funktionieren

if (ds.Tables[0].Rows.Count == 0)
{
    //
}
63
rosscj2533

Sie müssen den Datensatz nicht testen. 

Die Fill()-Methode gibt die Anzahl der hinzugefügten Zeilen zurück. 

Siehe DbDataAdapter.Fill-Methode (DataSet)

20
Tom

Es ist keine gültige Antwort, da es einen folgenden Fehler gibt

Tabelle 0 kann nicht gefunden werden.

Verwenden Sie stattdessen die folgende Anweisung

if (ds.Tables.Count == 0)
{
     //DataSet is empty
}
17
captainsac

Sie sollten alle Tabellen durchlaufen und prüfen, ob table.Rows.Count 0 ist

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

    return true;
}

Update: Da eine DataTable gelöschte Zeilen RowState = Deleted enthalten kann, kann es eine gute Idee sein, stattdessen DefaultView zu überprüfen (die keine gelöschten Zeilen enthält).

bool IsEmpty(DataSet dataSet)
{
    return !dataSet.Tables.Cast<DataTable>().Any(x => x.DefaultView.Count > 0);
}
15

Wir können insgesamt drei Möglichkeiten überprüfen.

  1. if(ds != null)
  2. if(ds.Tables.Count > 0 )
  3. if(ds.Tables[0].Rows.Count > 0)
6

Dieser Code zeigt einen Fehler wie Table[0] can not be found! An Position 0 wird keine Tabelle angezeigt.

if (ds.Tables[0].Rows.Count == 0)
{
    //
}
1
Subhash PM

So prüfen Sie, ob das Dataset leer ist oder nicht.

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);
if(ds != null && ds.Tables.Count > 0)
{
 // your code
}
0
Munavvar

Bei der Rückgabe von Ergebnissen aus einer SQL-Abfrage stelle ich fest, dass Tabellen [0] vorhanden sind, aber keine Zeilen enthalten. Also in meiner Situation hat das funktioniert:

if (ds.Tables [0] .Rows.Count == 0) // leer

Das hat nicht funktioniert:

if (ds.Tables.Count == 0)

0
James Grigley

Fill is gibt immer zurück, wie viele Datensätze in die Datenmenge eingefügt wurden. 

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
 MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
 DataSet ds = new DataSet();
 adap.Fill(ds);
 if (ds.Tables[0].Rows.Count == 0)
 {
      MessageBox.Show("No result found");
 }

die Abfrage empfängt die Daten im Datensatz und überprüft dann den Datensatz, der leer ist, oder enthält einige Daten. dafür tun wir ds.tables [0] .Rows.Count == o Dies zählt die Anzahl der Zeilen, die sich im Datensatz befinden. Wenn die obige Bedingung erfüllt ist, ist der Datensatz leer, dh ds ist leer.

0
NomanJaved

Vergessen Sie nicht, den Tabellennamen .__ einzustellen. da.Fill (ds, "Tabellenname");

Sie geben also Daten mit dem Tabellennamen anstelle von 0 zurück 

if (ds.Tables["tablename"].Rows.Count == 0)
 {
  MessageBox.Show("No result found");
 }
0
Salem Ahmed