如何测试DataSet是否为空?

时间:2010-06-04 17:41:12

标签: c# ado.net dataset

我正在修改使用以下内容执行查询的其他人的代码:

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

如何判断DataSet是否为空(即没有返回结果)?

14 个答案:

答案 0 :(得分:67)

如果我理解正确,这应该对你有用

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

答案 1 :(得分:20)

您不必测试数据集。

Fill()方法返回添加的行数。

请参阅DbDataAdapter.Fill Method (DataSet)

答案 2 :(得分:17)

这不是一个有效的答案,因为它会出现以下错误

  

找不到表格0。

使用以下语句

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

答案 3 :(得分:15)

你应该遍历所有表并测试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);
}

答案 4 :(得分:5)

我们可以检查三种方式。

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

答案 5 :(得分:1)

此代码将显示错误 Table[0] can not be found! 因为位置0不会有任何表格。

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

答案 6 :(得分: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");
 }

查询将接收数据集中的数据,然后我们将检查数据集是否为空或其中包含一些数据。为此我们做到了      ds.tables [0] .Rows.Count == o 这将计算数据集中的行数。如果上述条件为真,则数据集即ds为空。

答案 7 :(得分:0)

不要忘记设置表名     da.Fill(DS, “表名”);

因此,您使用表名而不是0

返回数据
if (ds.Tables["tablename"].Rows.Count == 0)
 {
  MessageBox.Show("No result found");
 }

答案 8 :(得分:0)

从SQL查询返回结果时,我发现表[0]存在,但它没有行。所以在我的情况下,这有效:

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

这不起作用:

if(ds.Tables.Count == 0)

答案 9 :(得分:0)

要检查数据集是否为空您必须检查空值和表计数。

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

答案 10 :(得分: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");
}

答案 11 :(得分:0)

你可以使用这样的东西

import AuthStore from '../stores'

答案 12 :(得分:-1)

这应该有效

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

if(ds.Tables.Count > 0)
{
  // enter code here
}

答案 13 :(得分:-4)

If (ds != null)

应该为你工作!