我的if条件不能正常工作

时间:2010-11-23 08:46:16

标签: c# ado.net

我正在使用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;
                    }
            }

5 个答案:

答案 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")) {
}