2010-11-23 65 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")) { 
}