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 に答える