2013-06-09 4 views
2

입력란에서 textbox1, textbox2에서 DB를 확인하고 주어진 사용자 이름과 암호 조합을 사용할 수 있는지 확인한 다음 textbox3에서 사용할 수있는 입력으로 암호를 업데이트하려고합니다. 당신은 두 번 ExecuteNonQuery를 호출하여 두 번 암호를 업데이트하려고C#, SQL의 업데이트 문

 protected void Button1_Click(object sender, EventArgs e) 
    { 
     MySqlConnection connection = new MySqlConnection("server=localhost; database=e-learningsystem; uid=root; password=123;port=3307;"); 
     connection.Open(); 
     try 
     { 

      MySqlCommand cmd1 = new MySqlCommand("UPDATE lecturer Set Password= '" + TextBox3.Text + "' WHERE UserName='" + TextBox1.Text + "' AND Password='" + TextBox2.Text + "'", connection); 
      cmd1.ExecuteNonQuery(); 
      if (cmd1.ExecuteNonQuery() > 0) 
      { 
       Response.Write(@"<script language='javascript'>alert('Your Password Has Been Changed successfully!, Congratulations!')</script>"); 
      } 
      else 
      { 
       Response.Write(@"<script language='javascript'>alert('Your Password Has Not Been Changed successfully!, Sorry!')</script>"); 
      } 
       connection.Close(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write(@"<script language='javascript'>alert(ex.Message)</script>"); 
     } 
    } 
+0

Eugh. "SQL 주입", google, 진지하게. 시스템이 위험합니다. 지금 당장, 암호를 변경하여 데이터베이스를 파괴 할 수있었습니다. –

+0

그런 다음 일반 텍스트 비밀번호 저장에 대해 읽어보십시오. 비밀번호를 저장하면 안됩니다. 당신은 그들을 암호화해서는 안됩니다. 패스워드의 소금에 절인 해시 *를 적용해야하며 (이상적으로는 사용자 별 소금을 사용하는 것이 가장 이상적입니다.) 해시를 ** 저장하십시오. –

+0

지금 : 원래의 질문에 대한 과장된 말 : "제대로 작동하지 않는다"는 것은 무엇을 의미합니까? 무슨 일이야? 그렇지 않습니까? –

답변

2

다음은 내 코드입니다하지만 내 업데이트 문이 제대로 작동하지 않는 것 같습니다 ... 내가 그것을 해결하는 데 도움을 주시기 바랍니다. 처음으로 ExecuteNonQuery을 호출하면 이 수집되지 않으며 다시 ExecuteNonQuery으로 전화하면 0을 반환하므로 항상 else 부분을 실행합니다.

만들기 다음과 같이 변경 -

int updateCount = cmd1.ExecuteNonQuery(); 
    if (updateCount > 0) 
    { 
     Response.Write(@"<script language='javascript'>alert('Your Password Has Been Changed successfully!, Congratulations!')</script>"); 
    } 
    else 
    { 
     Response.Write(@"<script language='javascript'>alert('Your Password Has Not Been Changed successfully!, Sorry!')</script>"); 
    } 
+0

아니요 하나만 'ExecuteNonQuery'문이 있습니다 ... 왜 거기에 전화 했습니까? 이해할 수 없습니다. @Parag Meshram – Jiya

+2

@Jiya 첫 번째는'cmd1.ExecuteNonQuery();'이고 두 번째 것은'if (cmd1. –

+0

@Jiya 그것은'UPDATE' 문을 두 번 실행합니다. 동일한 것을 테스트하려면 update를 INSERT 문으로 바꾸고, 두 개의 레코드를 삽입하십시오. –