我有以下方法来确保输入的用户名不存在。
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 Message =从对象类型System.Web.UI.WebControls.TextBox到已知的托管提供程序本机类型不存在映射。 源= System.Data
调试器在下面的行中给出了这个错误。
Int32 count = (Int32)cmd.ExecuteScalar();
知道这段代码有什么问题吗?
答案 0 :(得分:4)
我认为这就是行
cmd.Parameters.AddWithValue("@username", username);
username
是一个TextBox吗?如果是这样,您应该将行更改为:
cmd.Parameters.AddWithValue("@username", username.Text);
当前的行尝试将TextBox控件本身绑定到@username
参数。更正将TextBox控件中的文本绑定到@username
。