2014-01-26 8 views
-3

Я создаю приложение в Windows Forms. Моя проблема заключается в том, что в случае, если выполняется условие «else» в приведенном ниже коде, он не отображает окно сообщения, как это подразумевал бы код.Windows Forms - проблемы с отображением сообщения из окна сообщений

else     
MessageBox.Show(this, "invalid username password") 

Что я делаю неправильно?

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     SqlConnection con = new SqlConnection(); 
     con.ConnectionString = "Data Source=192.168.6.51,1433;Network Library=DBMSSOCN; Database=INTIME; User Id=********; password=********"; 
     con.Open(); 

     string str = "select * from Login_table where user_name='" + textBox1.Text + "' and password='" + textBox2.Text + "'"; 
     SqlCommand cmd = new SqlCommand(str, con); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     string login = textBox1.Text; 
     string pwd = textBox2.Text; 

     while (dr.Read()) 
     { 
      if ((dr["user_name"].ToString() == login) && (dr["password"].ToString() == pwd)) 
      { 
       Form2 objform1 = new Form2(); 
       objform1.Show(); 
       this.Hide(); 
      } 
      else 
       MessageBox.Show(this, "invalid username password"); 
     } 
     dr.Close(); 
     con.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

Вы пытались удалить первый аргумент из вызов? Сделайте это просто 'MessageBox.Show (« неверный пароль пользователя »);' –

ответ

1

Else часть не является достижимым. Вы передали имя пользователя и пароль хранимой процедуре, поэтому читатель не будет возвращать строку, если в таблице нет имени пользователя с этим паролем.

Эта проверка не имеет смысла, потому что если данные возвращаются, значит это условие оценивается из не, чтобы быть правдой уже:

if ((dr["user_name"].ToString() == login) && (dr["password"].ToString() == pwd)) 

Вы обязательно должны показать недействительны имя пользователя/пароль только когда нет строк возвращается с SP:

while (dr.Read()) 
    { 
     Form2 objform1 = new Form2(); 
     objform1.Show(); 
     this.Hide(); 
    } 

    if(!dr.HasRows) 
    { 
     MessageBox.Show(this, "invalid username password"); 
    } 
+1

Спасибо :) Рохит Ватс, я начал C# Первый раз. Ты спас мое время :) – user3237586

+0

Добро пожаловать. !! –

Смежные вопросы