Object must implement IConvertible
While writing some ASP.NET, I got this error. I’ve just spent ten minutes figuring it out, so I thought I’d share.
I have the following code in my ASP.NET page. userName
and password
are the text box controls on my login page. This code is in the handler for the login button:
SqlConnection connection = new SqlConnection(connectionString); SqlCommand command = connection.CreateCommand(); command.CommandText = "SELECT UserID FROM Users " + "WHERE UserName = @UserName " + "AND UserPassword = @UserPassword"; SqlParameter userNameParameter = command.Parameters.Add( "@UserName", SqlDbType.NVarChar, 50); SqlParameter passwordParameter = command.Parameters.Add( "@UserPassword", SqlDbType.NVarChar, 50); userNameParameter.Value = userName; passwordParameter.Value = password; connection.Open(); string userID = (string)command.ExecuteScalar(); connection.Close();
It causes the “Object must implement IConvertible” error on the call to ExecuteScalar
.
The problem: you can’t pass TextBox controls as parameter values. The code should look like this:
userNameParameter.Value = userName.Text; passwordParameter.Value = password.Text;
Doh!