2014-11-04 1 views
-1

전 소프트웨어를 개발하는이 새로운 세상입니다. 그래서 이것은 어리석게 들릴지도 모릅니다.원치 않는 결과를 나타내는 MessageBox

저는 대학에서 간단한 로그인 시스템을 개발하고 있습니다. 조금 더 빠르게하고 싶습니다. 교수님은 다소 혼란스럽고 혼란 스러우며, 우리가 배워야 할 작은 시간을 위험하게 만듭니다. 프로그램 작성.

사용자 이름과 암호가 유효하면 프로그램을 실행하고 기본 양식 만 열 수 있습니다.

데이터베이스에 데이터를 쓰는 등록 단추를 조사하고 작성하기 전에 메시지 상자가 제대로 작동하고있었습니다.

하지만 지금은 성공한 로그인이거나 그렇지 않은 경우 메시지 상자에 표시가 나타나지 않는 것 같습니다.

내 코드는 로그인 버튼에 대해 다음과 같습니다

private void VLogin_Click(object sender, EventArgs e) 
{ 

    try 
    { 
     string ConnectionString = "User ID=*****;Password=*******;" + 
       "Database=C:\\Users\\marqu_000\\Documents\\WindowsFormsApplication13\\Sistema.GDB;" + 
       "DataSource=localhost"; 
     FbConnection addDetailsConnection = new FbConnection(ConnectionString); 
     addDetailsConnection.Open(); 
     string SQLCommandText = "select * from LOGIN where [email protected] and [email protected]"; 
     FbCommand addDetailsCommand = new FbCommand(SQLCommandText, addDetailsConnection); 
     addDetailsCommand.Parameters.Add("@username", FbDbType.VarChar, 15).Value = userName.Text; 
     addDetailsCommand.Parameters.Add("@password", FbDbType.VarChar, 15).Value = userPassword.Text; 
     FbDataReader reader = addDetailsCommand.ExecuteReader(); 

     while (reader.Read()) 
     { 
      this.Visible = false; 
      MainWin MWin = new MainWin(); 
      MWin.ShowDialog(); 
      Application.Exit(); 
     } 

     MessageBox.Show("Login Successful"); 
    } 
    catch (Exception x) 
    { 
     MessageBox.Show("Invalid username or password"); 
     MessageBox.Show(x.Message); 
    } 
} 

그리고 이것은 등록 버튼에 대한 내 코드입니다 : 거기에 어떤 쓸모 라인이있는 경우

private void registerUser_Click(object sender, EventArgs e) 
{ 

    try 
    { 
     string ConnectionString = "User ID=****;Password=****;" + 
            "Database=C:\\Users\\marqu_000\\Documents\\WindowsFormsApplication13\\Sistema.GDB;" + 
             "DataSource=localhost"; 
     FbConnection addDetailsConnection = new FbConnection(ConnectionString); 
     addDetailsConnection.Open(); 
     FbCommand SQLCommandTextInsert = new FbCommand("INSERT INTO LOGIN(USERNAME, PASSWORD, LEVEL) VALUES (@username,@password,@level)", addDetailsConnection); 
     SQLCommandTextInsert.Parameters.AddWithValue("username", registerUsername.Text); 
     SQLCommandTextInsert.Parameters.AddWithValue("password", registerPassword.Text); 
     SQLCommandTextInsert.Parameters.AddWithValue("level", registerLevel.Text); 
     SQLCommandTextInsert.ExecuteNonQuery(); 

     MessageBox.Show("Registration completed!"); 
    } 
    catch (FbException fbex) 
    { 
     //throw fbex; 
     MessageBox.Show("Invalid information, please verify!"); 
     MessageBox.Show(fbex.Message); 
    } 
} 

, 그리고 그러한 것들을 만드는 가장 쉬운 방법, 나는 알고 싶습니다. 도움을 주신 모든 분들께 미리 감사드립니다. Marco.

+0

안녕하세요. 귀하의 질문을 편집하여 연결 문자열에서 사용자 이름과 암호를 제거하십시오. 앞으로의 질문에 그런 항목을 포함시키지 마십시오. – Tim

+1

어떤 메시지 상자가 나타나지 않습니까? 'ShowDialog' 블로킹 호출과'Application.Exit' 이후에 하나입니까? 예외를 프로그램 흐름을 제어하는 ​​방법으로 사용하는 것은 일을하는 좋은 방법이 아닙니다. – Sayse

+0

'VLogin_Click' 메소드의 시작 부분에 중단 점을 놓고 F5를 누릅니다. 코드를 단계별로 실행하여 정확히 무슨 일이 일어나는지 볼 수 있습니다. – Tim

답변

0

ShowDialog은 차단 호출이므로 해당 호출이 완료 될 때까지 코드가 실행되지 않습니다. 이 경우 MWin 종료 시점입니다. ShowDialog를 호출하기 전에 성공 메시지를 표시하거나 MWin에서 호출해야합니다.

로그인 실패 메시지는 예외가 발생할 경우에만 표시됩니다. 독자가 아무런 결과 (실패한 로그인)를 반환하지 않으면 코드를 올바르게 읽으면 "로그인 성공"을 표시 한 다음 다른 작업을하지 않을 것입니다.

if을 사용하여 데이터베이스가 결과를 반환하고 로그인에 실패했는지 확인하려면 else 조건을 사용할 수 있습니다.

+0

나는 당신이 말한 것을했고 'ShowDialog'전에 'MessageBox'를 옮겼습니다. if의 예를 보여 주시겠습니까? –

0

마침내 만들었습니다! IF를 사용하여 유효성 검사를 수행하고이를 수행 할 수있는 방법을 모색했습니다. 이것이 바로 내 코드의 모습입니다.

try 
     { 
      string ConnectionString = "User ID=*****;Password=*******;" + 
       "Database=C:\\Users\\marqu_000\\Documents\\WindowsFormsApplication13\\Sistema.GDB;" + 
       "DataSource=localhost"; 
      FbConnection addDetailsConnection = new FbConnection(ConnectionString); 
      addDetailsConnection.Open(); 
      string SQLCommandText = "select * from LOGIN where [email protected] and [email protected]"; 
      FbCommand addDetailsCommand = new FbCommand(SQLCommandText, addDetailsConnection); 
      addDetailsCommand.Parameters.Add("@username", FbDbType.VarChar, 15).Value = userName.Text; 
      addDetailsCommand.Parameters.Add("@password", FbDbType.VarChar, 15).Value = userPassword.Text; 
      FbDataReader reader = addDetailsCommand.ExecuteReader(); 
      if (reader.Read()) 
      { 
       this.Visible = false; 
       MessageBox.Show("Login Successful!"); 
       MainWin MWin = new MainWin(); 
       MWin.ShowDialog(); 
      } 
      else 
      { 
       MessageBox.Show("Invalid username or password!"); 
      }