0

我想检查我的数据读取器值并将其与另一个值进行比较,我使用这种代码和平但它不起作用。

ol_com.CommandText = "select [card_id] from student_info where [card_id] = '" + card_No.Text + "'";
reader = ol_com.ExecuteReader();
if (reader.IsDBNull(0) && reader["card_id"] == "-")
{
   //do my work here
}//end if

else
{
    //give a message
}//end else
4

1 回答 1

0

数据读取器

SqlDataReader 的默认位置在第一条记录之前。因此,您必须调用 Read 才能开始访问任何数据。

所以你必须调用 Read() 函数来获取第一条记录

Read() 方法返回一个布尔值——如果返回了任何行,则返回 true,如果没有返回任何行,则返回 false

ol_com.CommandText = "select [card_id] from student_info where [card_id] = '" + card_No.Text + "'";
reader = ol_com.ExecuteReader();
if(reader.Read())
{
  if (reader.IsDBNull(0) || reader["card_id"].ToString() == "-")
  {
   //do my work here
  }//end if

  else
  {
    //give a message
  }//end else
}

else
{
  //give message that given value does not exist in database
}

你应该使用 || (OR) 运算符而不是 && ( AND ),因为一个值不能既是 DBNull 又是“-”。它只能是 DBNull“-”

于 2013-09-15T16:51:57.100 回答