title: No mapping exists from object type System.Web.UI.WebControls.TextBox to a known managed provider native type
body: <p>This is my code </p>
  
  <pre><code>SqlCommand cmd = new SqlCommand("spRegisterUser", con);
  cmd.CommandType = CommandType.StoredProcedure;
  
  SqlParameter username = new SqlParameter("@UserName", txtUserName.Text);
  
  SqlParameter password = new SqlParameter("@Password", txtPassword);
  SqlParameter email = new SqlParameter("@Email", txtEmail.Text);
  SqlParameter userType = new SqlParameter("@UserType", SqlDbType.NVarChar, 200);
  userType.Value = "Student";
  cmd.Parameters.Add(username);
  cmd.Parameters.Add(password);
  cmd.Parameters.Add(email);
  cmd.Parameters.Add(userType);
  
  con.Open();
  
  int ReturnCode = (int)cmd.ExecuteScalar(); //This is where it displays error message
  if (ReturnCode == -1)
  </code></pre>
  
  <p>Any ideas?</p>
  
  <p>Here is the error message </p>
  
  <blockquote>
    <p>No mapping exists from object type System.Web.UI.WebControls.TextBox to a known managed provider native type.</p>
    
    <p>Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.</p>
    
    <p>Exception Details: System.ArgumentException: No mapping exists from object type System.Web.UI.WebControls.TextBox to a known managed provider native type.</p>
    
    <p>Source Error:</p>
  
  <pre><code>Line 48:                     con.Open();
  Line 49: 
  Line 50:                     int ReturnCode = (int)cmd.ExecuteScalar();
  Line 51:                     if (ReturnCode == -1)
  Line 52:                     {
  </code></pre>
    
    <p>Source File: c:\Users\Mubashir\Documents\Visual Studio 2012\Projects\Sit302GroupProject\Sit302GroupProject\Registration\Registration.aspx.cs    Line: 50</p>
    
    <p>Stack Trace:</p>
  
  <pre><code>[ArgumentException: No mapping exists from object type System.Web.UI.WebControls.TextBox to a known managed provider native type.]
         System.Data.SqlClient.MetaType.GetMetaTypeFromValue(Type dataType, Object value, Boolean inferLen, Boolean streamAllowed) +2021139
         System.Data.SqlClient.SqlParameter.GetMetaTypeOnly() +5287377
         System.Data.SqlClient.SqlParameter.Validate(Int32 index, Boolean isCommandProc) +16
         System.Data.SqlClient.SqlCommand.SetUpRPCParameters(_SqlRPC rpc, Int32 startCount, Boolean inSchema, SqlParameterCollection parameters) +122
         System.Data.SqlClient.SqlCommand.BuildRPC(Boolean inSchema, SqlParameterCollection parameters, _SqlRPC&amp; rpc) +78
         System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task&amp; task, Boolean asyncWrite) +1379
         System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task&amp; task, Boolean asyncWrite) +175
         System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +53
         System.Data.SqlClient.SqlCommand.ExecuteScalar() +149
         Sit302GroupProject.Registration.btnRegister_Click(Object sender, EventArgs e) in c:\Users\Mubashir\Documents\Visual Studio 2012\Projects\Sit302GroupProject\Sit302GroupProject\Registration\Registration.aspx.cs:50
         System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9552602
         System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
         System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
         System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
         System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
         System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724
  </code></pre>
  </blockquote>
  
  <p>Here is the Stored Procedure</p>
  
  <pre><code>CREATE proc spRegisterUser
  @Username nvarchar(100),
  @Password nvarchar(200),
  @Email  nvarchar(200),
  @UserType  nvarchar(200),
  as 
  Begin 
  Declare @Count int
  Declare @ReturnCode int
  
  Select @Count = COUNT(UserName)
  from tblUsers where UserName = @UserName
  If @COunt &gt; 0
  Begin 
  Set @Return = -1
  End
  Else
  Begin
  Set @ReturnCode = 1
  Insert into tblUsers values
  (@UserName, @Password, @Email, @UserType)
  End
  Select @ReturnCode as ReturnValue
  End
  </code></pre>