it-swarm.com.ru

Как проверить, что DataSet пуст?

Я изменяю чужой код, где выполняется запрос, используя следующее:

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

Как я могу сказать, что DataSet пуст (то есть, никаких результатов не было возвращено)?

42
MCS

Если я правильно понимаю, это должно работать для вас

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

Вам не нужно проверять набор данных. 

Метод Fill() возвращает количество добавленных строк. 

См. метод DbDataAdapter.Fill (DataSet)

20
Tom

Это неверный ответ, так как он дает следующую ошибку

Не могу найти таблицу 0.

Вместо этого используйте следующее утверждение

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

Вы должны перебрать все таблицы и проверить, равен ли table.Rows.Count 0

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

    return true;
}

Обновление: поскольку DataTable может содержать удаленные строки RowState = Deleted, в зависимости от того, что вы хотите достичь, было бы неплохо вместо этого проверить DefaultView (который не содержит удаленных строк).

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

Мы можем проверить всего тремя способами.

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

Этот код покажет ошибку типа Table[0] can not be found!, Потому что в позиции 0 не будет никакой таблицы.

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

Чтобы проверить, набор данных пуст или нет, Вы должны проверить ноль и количество таблиц.

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

При возврате результатов запроса SQL я обнаружил, что таблицы [0] существуют, но в них нет нулевых строк. Так что в моей ситуации это сработало:

if (ds.Tables [0] .Rows.Count == 0) // пусто

Это не сработало:

if (ds.Tables.Count == 0)

0
James Grigley

Fill - команда всегда возвращает количество записей, вставленных в набор данных. 

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

запрос получит данные в наборе данных, а затем мы проверим набор данных, который является пустым или содержит некоторые данные. для этого мы делаем ds.tables [0] .Rows.Count == o будет подсчитывать количество строк в наборе данных. Если указанное выше условие истинно, то набор данных, т.е. ds, пуст.

0
NomanJaved

Не забудьте установить имя таблицы da.Fill (DS, "имя_таблица");

Таким образом, вы возвращаете данные, используя имя таблицы вместо 0 

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