web-dev-qa-db-ja.com

DataSetが空かどうかをテストする方法は?

次を使用してクエリが実行される他の人のコードを変更しています:

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

DataSetが空(つまり、結果が返されなかった)かどうかを確認するにはどうすればよいですか?

46
MCS

私が正しく理解すれば、これはあなたのために働くはずです

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

データセットをテストする必要はありません。

Fill()メソッドは、追加された行数を返します。

DbDataAdapter.Fill Method(DataSet) を参照してください

21
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

合計3つの方法を確認できます。

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

データセットが空かどうかを確認するには、nullとテーブルカウントを確認する必要があります。

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

位置0にはテーブルがないため、このコードはTable[0] can not be found!のようなエラーを表示します。

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

SQLクエリから結果を返すと、tables [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
 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、 "tablename");

したがって、0ではなくテーブル名を使用してデータを返します

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