2010-11-23 73 views
1

我在C#上的ADO.NET工作,我成功地连接了我的数据库,一切都很好,所以我把检查边(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; 
        } 
      } 

回答

4

您可能在一端或另一端有空白。

试着改变你的MessageBox调用环绕串加上引号,或添加到.Trim比较:

... (reader["ID"].ToString().Trim(), "Doctor") ... 
+0

如何?代码在这里可以检查吗? – salman 2010-11-23 08:52:11

+2

我怀疑我会救一个溺水的人,如果他叫我'救你自己'两次击键。 – 2010-11-23 08:54:15

2

你确定字符串“医生”没有前导或尾随空格?如果将它显示在MessageBox中,则无法真正看到它们。

尝试

MessageBox.Show("-" + reader["ID"] + "-"); 

看到的。

参见:string.Trim

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; 
       } 
     } 
2

尝试:

reader["ID"].ToString().Trim(); 
1

也许字符串存储在数据库中开始或结束s与空白。

你可能也想尝试:

if (String.Equals(reader["ID"].ToString().Trim(), "Doctor")) { 
} 

,或者更明确:

if (reader["ID"].ToString().Trim() == "Doctor")) { 
}