电子邮件列位于表格中的第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;
}
答案 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;