2015-06-28 7 views
0

Я делаю простую форму входа и получаю следующее исключениеArgumentException

ArgumentException был пойман. Не существует сопоставления типа объекта System.Web.UI.WebControls.TextBox с известным управляемым провайдером .

Здесь С код

 SqlConnection con = new SqlConnection("Data source=.;Initial catalog=InvoiceSystem;user id =sa;password=rfm"); 
     SqlCommand cmd = new SqlCommand("spLogin", con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     SqlParameter p1 = new SqlParameter("username", txtUsername); 
     SqlParameter p2 = new SqlParameter("password", txtPassword); 
     cmd.Parameters.Add(p1); 
     cmd.Parameters.Add(p2); 
     try 
     { 
      con.Open(); 
      SqlDataReader rd = cmd.ExecuteReader(); 
      if (rd.HasRows) 
      { 
       rd.Read(); 
       Response.Redirect("Default.aspx"); 
      } 
      else 
      { 
       Response.Write("<script>alert('Invalid Username/Password')</script>"); 
      } 
     } 
     catch{ 

     } 

ответ

3

Вы пытаетесь отправить TextBox объекты в хранимой процедуре #:

SqlParameter p1 = new SqlParameter("username", txtUsername); 
SqlParameter p2 = new SqlParameter("password", txtPassword); 

Он не знает, что делать с этими объектами. Вместо этого, просто отправить текст, содержащийся в этих текстовых полях:

SqlParameter p1 = new SqlParameter("username", txtUsername.Text); 
SqlParameter p2 = new SqlParameter("password", txtPassword.Text); 
1

Вы проходящие сам TextBox в SqlParameter вместо этого текстового значения. Измените его на:

SqlParameter p1 = new SqlParameter("username", txtUsername.Text); 
    SqlParameter p2 = new SqlParameter("password", txtPassword.Text); 
1

Вы должны извлечь текст, используя свойство .Text так:

SqlParameter p1 = new SqlParameter("username", txtUsername.Text); 
SqlParameter p2 = new SqlParameter("password", txtPassword.Text); 
Смежные вопросы