多部件标识符“arafa.almahmud08@gmail.com”无法绑定

时间:2012-09-28 15:55:18

标签: asp.net sql-server-2008

我已经构建了一个自定义验证器,

我有一个像这样的SQL查询:

protected void custom_serverValidate(object sender, ServerValidateEventArgs e)
    {
        connect();
        string strSQL = "select EmailAddress from Accounts_Users where EmailAddress=" + REmailTextBox.Text;
        SqlCommand cmd = new SqlCommand(strSQL, objConnection);
        if (e.Value.ToString() == cmd.ExecuteScalar().ToString())
        {
            e.IsValid = false;
        }
        else
            e.IsValid = true;
        disConnect();
    }

当我在浏览器和电子邮件地址中执行我的代码并提交它时,我收到标题中提到的错误。如何解决?

2 个答案:

答案 0 :(得分:2)

您的电子邮件地址周围缺少引号。但是 - 这是一个等待发生的SQL注入攻击。请切换到使用参数。

string strSQL = "select EmailAddress from Accounts_Users where EmailAddress = @EmailAddress"

...

cmd.Parameters.AddWithValue("@EmailAddress", REmailTextBox.Text);

答案 1 :(得分:1)

您忘记使用单引号。使用:

string commandText = "select EmailAddress from Accounts_Users where EmailAddress=@EmailAttress";
SqlCommand cmd = new SqlCommand(commandText, conn);
cmd.Parameters.Add("@EmailAddress", REmailTextBox.Text);