我使用存储在会话中的用户电子邮件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);
}
}
我已经检查了所有名称,没关系。
我现在不知道该怎么办!
答案 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注入。