我正在使用ADO.NET上的C#工作,我成功地与我的数据库连接,一切都很好,所以我放入了一边检查(reader.Read)检查specefic值,但每次尝试时条件都是假的,
string qry = "select * from LoginTB";
reader = db.select_data(qry);
while (reader.Read())
{
MessageBox.Show(reader["ID"].ToString());// its shows Doctor
if (string.Equals(reader["ID"].ToString(), "Doctor"))// why false?!
{
//flag = true;
MessageBox.Show("hello");
str = reader[2].ToString();
break;
}
}
答案 0 :(得分:4)
你可能在一端或另一端有空格。
尝试更改MessageBox调用以使用引号括起字符串,或者将.Trim添加到比较中:
... (reader["ID"].ToString().Trim(), "Doctor") ...
答案 1 :(得分:2)
您确定字符串“Doctor”没有前导或尾随空格吗?如果在MessageBox中显示它们,则无法真正看到它们。
尝试
MessageBox.Show("-" + reader["ID"] + "-");
看。
另请参阅:string.Trim
答案 2 :(得分:2)
尝试:
reader["ID"].ToString().Trim();
答案 3 :(得分:1)
尝试,注意Trim()函数
while (reader.Read())
{
MessageBox.Show(reader["ID"].ToString());// its shows Doctor
if (string.Equals(reader["ID"].ToString().Trim(), "Doctor"))// why false?!
{
//flag = true;
MessageBox.Show("hello");
str = reader[2].ToString();
break;
}
}
或
while (reader.Read())
{
MessageBox.Show(reader["ID"].ToString());// its shows Doctor
if (string.compare(reader["ID"].ToString().Trim(), "Doctor",true)==0)// why false?!
{
//flag = true;
MessageBox.Show("hello");
str = reader[2].ToString();
break;
}
}
答案 4 :(得分:1)
也许存储在数据库中的字符串以空格开头或结尾。
您可能想尝试:
if (String.Equals(reader["ID"].ToString().Trim(), "Doctor")) {
}
或者,更清楚:
if (reader["ID"].ToString().Trim() == "Doctor")) {
}