Ответ 1
Если я правильно понимаю, это должно сработать для вас
if (ds.Tables[0].Rows.Count == 0)
{
//
}
Я изменяю код другого пользователя, где выполняется запрос, используя следующее:
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);
Как я могу определить, пуст ли DataSet (т.е. результаты не были возвращены)?
Если я правильно понимаю, это должно сработать для вас
if (ds.Tables[0].Rows.Count == 0)
{
//
}
Вам не нужно проверять набор данных.
Метод Fill()
возвращает количество добавленных строк.
Это неверный ответ, поскольку он дает следующую ошибку
Не удается найти таблицу 0.
Используйте вместо этого следующий оператор
if (ds.Tables.Count == 0)
{
//DataSet is empty
}
Вы должны пропустить все таблицы и проверить, если 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);
}
Мы можем проверить всего тремя способами.
if(ds != null)
if(ds.Tables.Count > 0 )
if(ds.Tables[0].Rows.Count > 0)
Этот код покажет ошибку, как
Table[0] can not be found!
потому что в позиции 0 не будет никакой таблицы.
if (ds.Tables[0].Rows.Count == 0)
{
//
}
Проверить набор данных пуст или нет. Вы должны проверить количество нулей и таблиц.
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);
if(ds != null && ds.Tables.Count > 0)
{
// your code
}
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, пуст.
Не забудьте указать имя таблицы da.Fill(DS, "имя_таблица" );
Таким образом, вы возвращаете данные с использованием имени таблицы вместо 0
if (ds.Tables["tablename"].Rows.Count == 0)
{
MessageBox.Show("No result found");
}
При возврате результатов запроса SQL я обнаруживаю, что существуют таблицы [0], но у него есть нулевые строки. Поэтому в моей ситуации это сработало:
if (ds.Tables [0].Rows.Count == 0)//пусто
Это не сработало:
if (ds.Tables.Count == 0)
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");
}
Это должно работать
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);
if(ds.Tables.Count > 0)
{
// enter code here
}
If (ds != null)
Делайте работу за вас!