1

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

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 消息=不存在从对象类型 System.Web.UI.WebControls.TextBox 到已知托管提供程序本机类型的映射。源=系统.数据

调试器在下面的行中给了我这个错误。

Int32 count = (Int32)cmd.ExecuteScalar();

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

4

1 回答 1

4

我认为这是行

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

username文本框吗?如果是这样,您应该将行更改为:

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

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

于 2012-10-04T00:23:21.410 回答