验证方法错误

时间:2012-10-04 00:16:02

标签: c# asp.net

我有以下方法来确保输入的用户名不存在。

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();

知道这段代码有什么问题吗?

1 个答案:

答案 0 :(得分:4)

我认为这就是行

cmd.Parameters.AddWithValue("@username", username);

username是一个TextBox吗?如果是这样,您应该将行更改为:

cmd.Parameters.AddWithValue("@username", username.Text);

当前的行尝试将TextBox控件本身绑定到@username参数。更正将TextBox控件中的文本绑定到@username