C# sqldatareader错误

C# sqldatareader错误,c#,sql-server,sqldatareader,C#,Sql Server,Sqldatareader,我想检查sqldatareader是否为null。因此尝试了以下代码: if (x[k]!= DBNull.Value) { box.Text = Convert.ToString(x[k++]); if ((box.Text) != "") current[j - 1] = Convert.ToDouble(box.Text); else current[j - 1] = 0; box.Enabled = false; } 但是,在尝试检查datareade

我想检查sqldatareader是否为null。因此尝试了以下代码:

if (x[k]!= DBNull.Value)   
{
  box.Text = Convert.ToString(x[k++]);

  if ((box.Text) != "")
    current[j - 1] = Convert.ToDouble(box.Text);
  else current[j - 1] = 0;

  box.Enabled = false;
}
但是,在尝试检查datareader中的值时,它会抛出一个错误,“在没有数据时读取数据的尝试无效”。否则我应该如何检查数据是否存在。!!请帮忙。这里是一个sqldatareader SqlDataReader x=cmd.ExecuteReader();
cmd是一个select COMMAND.

您可以使用
SqlDataReader.HasRows
-如果至少存在一行数据,则为真,或者您可以使用
SqlDataReader.read()读取所有结果

以你为例:

while(x.Read())
{
  //read stuff
}

您可以使用
SqlDataReader.HasRows
-如果至少有一行数据存在,则为真,或者您可以使用
SqlDataReader.read()
读取所有结果

以你为例:

while(x.Read())
{
  //read stuff
}

在访问DataRows之前,可以执行空检查并具有行

像这样

if(null != x && x.HasRows)
{
//Your code
}

在访问DataRows之前,可以执行空检查并具有行

像这样

if(null != x && x.HasRows)
{
//Your code
}

但它仍然显示出同样的错误!!虽然满足了if条件,但它无法执行line box.Text=Convert.ToString(x[k++]);x的fieldcount显示为6,但为什么它不能读取x[k]?即使当k=0时。尝试快速查看x[k]的值。是否可以查看存储在datareader中的值?我的意思是,我不认为有办法窥视x[0]或x[1]中的值……是的,使用快速观察功能可以做到这一点。但它仍然显示相同的错误!!虽然满足了if条件,但它无法执行line box.Text=Convert.ToString(x[k++]);x的fieldcount显示为6,但为什么它不能读取x[k]?即使当k=0时。尝试快速查看x[k]的值。是否可以查看存储在datareader中的值?我的意思是,我不认为有办法窥视x[0]或x[1]中的值……是的,使用快速观察功能可以做到这一点。