我想检查我的数据读取器值并将其与另一个值进行比较我使用这种代码安静但它不起作用。
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
答案 0 :(得分:0)
SqlDataReader的默认位置在第一条记录之前。因此,您必须调用Read才能开始访问任何数据。
所以你必须调用Read()函数才能进入第一条记录
如果返回任何行,则Read()方法返回boolean- 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
}
你应该使用|| (或)运营商而不是&& (AND)因为值不能是DBNull AND “ - ”。它只能是DBNull OR “ - ”