多部分标识符a@gmail.com无法绑定

时间:2017-02-25 07:45:17

标签: asp.net

电子邮件列位于表格中的第4位 数据类型是varchar con.Open();

    cmd = new SqlCommand("select * from UserInfo where EMail=" + EMail + "", con);
    SqlDataReader dr;

    dr =cmd.ExecuteReader();//here I get error
    while (dr.Read())
    {

        lblCustName.Text = dr[1].ToString();
        lblAddress.Text = dr[2].ToString();
        lblMobNo.Text = dr[3].ToString();

        lblEMail.Text = dr[4].ToString();
        //con.Close;

    }

1 个答案:

答案 0 :(得分:0)

传递由单个qoutes限制的参数

cmd = new SqlCommand("select * from UserInfo where EMail='" + EMail + "', con);

如果没有单个qoutes,重新存在的查询将会出现

select * from UserInfo where EMail=a@gmail.com

其中值 a@gmail.com 被视为 tableName.columnName ,无法绑定错误多部分标识符。

如果使用参数化查询来避免SQL注入攻击而不是直接将值传递给查询,那就更好了。

cmd = new SqlCommand("select * from UserInfo where EMail=@Email", con);
cmd.Parameters.Add("@Email",SqlDbType.Varchar,1000).Value = Email;