【问题标题】:Check dataset is empty or not检查数据集是否为空
【发布时间】:2012-02-28 16:29:45
【问题描述】:

这对我来说很好用。使用 if 检查数据集是否为空。如果是,则返回空值。但是检查数据集的方式是正确的还是我应该采取其他方式?

 da2 = new SqlDataAdapter("SELECT project_id FROM project WHERE _small_project_id = '" + cb_small_project.SelectedValue + "' ORDER BY NEWID()", conn);
 ds2 = new DataSet();
 da2.Fill(ds2);
 DataRow[] rowProject = dt2.Select();

 if (ds2.Tables[0].Rows.Count == 0)
    cmd.Parameters["@_project_id"].Value = guidNull;
 else
    cmd.Parameters["@_project_id"].Value = rowProject[0]["project_id"];

【问题讨论】:

  • 我认为你应该检查你是否也有桌子
  • 是的,以防万一,或者在 try,catch 块中说唱,以防止出现异常时代码停止
  • 或者你的意思是这样的stackoverflow.com/questions/2976473/…>

标签: c# dataset


【解决方案1】:

在我看来,“正确”的方法是同时检查两者:

ds2.Tables.Count 

ds2.Tables[0].Rows.Count

【讨论】:

  • ds2.Tables.Count 即使表没有数据也会给出 1。
【解决方案2】:

我会尝试检查:
ds2.HasChanges()
如果添加了任何数据,则应为 true。 更多信息请查看here

【讨论】:

    【解决方案3】:

    您可以使用bool 并返回true。对于dataset中的所有表

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

    【讨论】:

    • 如果数据集为NULL会抛出异常。
    【解决方案4】:

    试试这个

     if (((System.Data.InternalDataCollectionBase)(ds.Tables)).Count != 0)
    {
    }
    else
    {
    }
    

    上面的代码可以工作

    【讨论】:

      【解决方案5】:

      这对我有用....并且不会例外....

      foreach (DataTable table in ds.Tables)
         if (table.Rows.Count != 0)
            table.Dispose();
      

      【讨论】:

      • 动态解决方案
      猜你喜欢
      • 2011-04-24
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2017-01-10
      • 2016-06-20
      • 2017-05-28
      • 2019-10-11
      相关资源
      最近更新 更多