如何testing数据集是否为空?
我正在修改使用以下内容执行查询的其他人的代码:
DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn); da.Fill(ds);
如何判断DataSet是否为空(即没有返回结果)?
如果我理解正确,这应该适合你
if (ds.Tables[0].Rows.Count == 0) { // }
您不必testing数据集。
Fill()
方法返回添加的行数。
请参阅DbDataAdapter.Fill方法(DataSet)
这不是一个有效的答案,因为它给出了以下错误
找不到表0。
改用下面的语句
if (ds.Tables.Count == 0) { //DataSet is empty }
你应该遍历所有的表,并testingtable.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); }
我们可以检查总共三种方法。
- 如果(ds!= null)
- 如果(ds.Tables.Count> 0)
- 如果(ds.Tables [0] .Rows [0] .Count> 0)
此代码将显示一个错误,如Table[0] can not be found!
因为在位置0将不会有任何表格。
if (ds.Tables[0].Rows.Count == 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是空的。
不要忘记设置表名da.Fill(ds,“tablename”);
所以你使用表名返回数据而不是0
if (ds.Tables["tablename"].Rows.Count == 0) { MessageBox.Show("No result found"); }
从SQL查询返回结果时,我发现表[0]存在,但它有零行。 所以在我的情况下,这工作:
如果(ds.Tables [0] .Rows.Count == 0)//空
这不起作用:
如果(ds.Tables.Count == 0)
检查数据集是否为空您必须检查空值和表计数。
DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn); da.Fill(ds); if(ds != null && ds.Tables.Count > 0) { // your code }
Fill
是命令总是返回插入到数据集中的多less条logging。
DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn); var count = da.Fill(ds); if(count > 0) { Console.Write("It is not Empty"); }
If (ds != null)
应该为你做的工作!