2016-06-09 4 views
-1

사용자 이름이 이미 데이터베이스에 있는지 확인하고 싶습니다. 내 업데이트 성명서와 함께 제공됩니다. 이 코드를하고 난 선택 문을 넣을 위치를 모르는 :사용자 이름이 ASP.Net을 사용하여 데이터베이스에 있는지 확인하십시오.

protected void btn_update_Click(object sender, EventArgs e) 
{ 
    SqlConnection con = new SqlConnection(conn); 
    con.Open(); 

    str = "update UserData set [email protected] where UserName='" + txtUser.Text + "'"; 

    com = new SqlCommand(str, con); 

    com.Parameters.Add(new SqlParameter("@Password", SqlDbType.VarChar)); 
    com.Parameters["@Password"].Value = BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text); 

    com.ExecuteNonQuery(); 

    con.Close(); 
    Label1.Visible = true; 
    Label1.Text = "Password changed Successfully!" ; 

    con.Close(); 
} 

I 당신은 여기 SELECT 필요하지 않습니다

"Select Username from Userdata Where Username = txtUser.Text" 
+0

질문이 명확하지 않습니다,하지만 당신은 사용자 이름이 데이터베이스에있는 경우 예, 진행하는 경우, 선택 @NazirUllah 명령 –

+0

을 선택해야 할 목적을 위해 무엇을. 그렇지 않다면 오류 –

답변

2

같은 것을 원한다. ExecuteNonQuery()은 영향을받는 행 수를 반환합니다. 즉, 0을 반환하면 데이터베이스에 지정된 이름의 사용자가 없었습니다. 모두 정상적으로 처리되면 1을 반환해야합니다.

코드는 SQL 삽입 및 누출에 취약합니다. 여기에 더 나은 버전입니다 :

protected void btn_update_Click(object sender, EventArgs e) 
{ 
    using(var con = new SqlConnection(conn)) 
    {   
     con.Open(); 
     var commandTest = "update UserData set [email protected] where UserName[email protected]"; 

     using(var com = new SqlCommand(commandTest, con)) 
     { 
      com.Parameters.AddWithValue("@Username", txtUser.Text); 
      com.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text)); 

      if(com.ExecuteNonQuery() == 1) 
      { 
       Label1.Visible = true; 
       Label1.Text = "Password changed Successfully!" ;    
      } 
     } 
    } 
} 
+0

이 나에게 오류를 발생시킵니다 CommandText 속성이 초기화되지 않았습니다 –

+0

영향을받은 행은 if (com.ExecuteNonQuery() == 1) –

+0

고정 됨 - '새 SqlCommand (commandTest, con)'부분 참조 –

관련 문제