2010-11-23 4 views
1

Я работаю в C# на ADO.NET, я успешно связан с моей базой данных, и все в порядке, поэтому я поставил чек в сторону (reader.Read), чтобы проверить значение specefic, но условие давая ложь каждый раз, когда я пытаюсь,my if условие не работает должным образом

  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

Я сомневаюсь, что я спасу человека, тонущего в кислоте, если он позвонит мне «u», чтобы спасти себя двумя нажатиями клавиш. – 2010-11-23 08:54:15

2

Вы уверены, что строка «Доктор» не имеет ведущие или ведомые пробелы? Вы не можете их увидеть, если вы покажете его в MessageBox.

Попробуйте

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

видеть.

Смотрите также: Функция string.Trim

1

попробовать, Примечание Обрезка()

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

Может быть строка хранится в базе данных начинается или заканчивается с пробелами.

Вы могли бы хотеть попробовать:

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

Или, более ясно:

if (reader["ID"].ToString().Trim() == "Doctor")) { 
} 
Смежные вопросы