2014-01-26 143 views
-3

我在Windows窗體中構建應用程序。我的問題是,如果執行下面的代碼中的「else」條件,它不會顯示代碼所暗示的消息框。Windows窗體 - 顯示來自消息框的消息的問題

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

謝謝:) Rohit Vats我開始C#第一次。你救了我的時間:) – user3237586

+0

不客氣.. !! –