user2345661 user2345661 - 1 month ago 11
ASP.NET (C#) Question

No mapping exists from object type System.Web.UI.WebControls.TextBox to a known managed provider native type

This is my 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)


Any ideas?

Here is the error message

No mapping exists from object type System.Web.UI.WebControls.TextBox to a known managed provider native type.


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.

Exception Details: System.ArgumentException: No mapping exists from object type System.Web.UI.WebControls.TextBox to a known managed provider native type.

Source Error:


Line 48: con.Open();
Line 49:
Line 50: int ReturnCode = (int)cmd.ExecuteScalar();
Line 51: if (ReturnCode == -1)
Line 52: {


Source File: c:\Users\Mubashir\Documents\Visual Studio 2012\Projects\Sit302GroupProject\Sit302GroupProject\Registration\Registration.aspx.cs Line: 50

Stack Trace:


[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& rpc) +78
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite) +1379
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& 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


Here is the Stored Procedure

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 > 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

Answer

You are passing txtPassword which is an object of TextBox, thus you are getting exception.

Problem is in line

SqlParameter password = new SqlParameter("@Password", txtPassword);

So change your code to

SqlParameter password = new SqlParameter("@Password", txtPassword.Text);
Comments