'asp.net'多部分标识符“ abc@gmail.com”无法绑定。

时间:2018-10-04 16:55:07

标签: c# sql asp.net sql-server

我使用存储在会话中的用户电子邮件ID编写了一些代码来访问ID表单表dbo.details,但出现此错误

  

无法绑定多部分标识符“ abc@gmail.com”

我已经使用了Visual Studio 2017的内置服务器。

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
        if (Session["user"] == null)
        {
            Response.Write("<script>alert('you have to login to Checkout!')</script>");
            Response.Redirect("login.aspx");
        }
        else
        {
            string S1 = Convert.ToString(Session["user"].ToString());

            SqlConnection scon = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
            String myquery = "select ID from dbo.details where email=" + S1;

            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = myquery;
            cmd.Connection = scon;

            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = cmd;

            DataSet ds = new DataSet();
            da.Fill(ds);

            int details_id = Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
            Response.Write(details_id);
        }
}

我已经检查了所有名称,没关系。

我现在不知道该怎么办!

2 个答案:

答案 0 :(得分:0)

使用字符串引号

 String SQL = string.Format("select ID from dbo.details where email='{0}'", S1 );

答案 1 :(得分:-2)

错误的根本原因是此行-

String myquery = "select ID from dbo.details where email=" + S1;

它将以

构建查询
select ID from dbo.details where email=abc@gmail.com;

现在,如果您运行此查询,您将获得异常,因为电子邮件被假定为用单引号引起来的字符串。因此,更改myQuery以在电子邮件周围添加单引号,如下所示。

String myquery = "select ID from dbo.details where email='" + S1 + "'";

但是,始终建议使用parameterised queries. 以避免SQL注入。