2012-10-04 6 views
1

입력 한 사용자 이름이 존재하지 않도록 다음 방법을 사용합니다.유효성 검사 방법 오류

protected void checkUsername(object source, ServerValidateEventArgs args) 
{ 
    string connString = "Data Source=server;Initial Catalog=database;User Id=username;Password=password;"; 
    string cmdText = "SELECT COUNT(*) FROM igs_users WHERE username = @username"; 

    using(SqlConnection conn = new SqlConnection(connString)) 
    { 
     conn.Open(); 
     using(SqlCommand cmd = new SqlCommand(cmdText, conn)) 
     { 
      cmd.Parameters.AddWithValue("@username", username); 
      Int32 count = (Int32)cmd.ExecuteScalar(); 

      args.IsValid = true; 
     } 
    } 
} 

실행할 때 다음 오류가 발생합니다.

System.ArgumentException은 사용자 코드 HRESULT = -2147024809 메시지 = 매핑이 알려진 관리 업체 네이티브 형식으로 개체 유형의 System.Web.UI.WebControls.TextBox에서 존재하지에 의해 처리되지 않은이었다. Source = System.Data

디버거에서 다음 오류 메시지를 표시합니다.

Int32 count = (Int32)cmd.ExecuteScalar(); 

이 코드에 어떤 문제가 있습니까?

답변

4

나는 줄

cmd.Parameters.AddWithValue("@username", username); 

username 텍스트 상자의 생각?

cmd.Parameters.AddWithValue("@username", username.Text); 

는 현재 @username 매개 변수에 TextBox 컨트롤 자체를 결합하는 시도를 약자로 라인 : 그렇다면, 당신은 라인을 변경해야합니다. 수정하면 TextBox 컨트롤 내의 텍스트가 @username으로 바인딩됩니다.

+0

그게 전부입니다. 감사. 이런, 너무 간단한 수정. – Trido

+1

나는 결코 그런 것을 한 적이 없다고 말할 수 있었으면 좋지만, 나는 가지고있다. :-) – wintermute