我有一段代码c#可以登录,但无法正常工作,它在其他情况下给了我消息:
protected void Button1_Click(object sender, EventArgs e)
{
string Connection = @"data source=LOCALHOST;initial catalog=CVtech;Integrated Security=false;User ID=sa;Password=123";
string Requete = "select * from Agent where Login ='" + UserLogin.Text + " and PPR = " + UserPass.Text+"'";
SqlDataAdapter da = new SqlDataAdapter(Requete, Connection);
DataSet Ds = new DataSet();
da.Fill(Ds);
if (Ds.Tables[0].Rows.Count > 0)
{
DataRow[] dr = Ds.Tables[0].Select();
Session["Code"] = dr[0]["PPR"].ToString();
Response.Redirect("cv.aspx");
}
else
{
Response.Write(" message d'erreur login et mot de passe erroné");
}
}
我有一个登录名:“ Ach”,PPR = 1
谢谢
您没有关闭sql请求中的字符串值。
string Requete = "select * from Agent where Login ='" + UserLogin.Text + " and PPR = " + UserPass.Text + "'";
应该
string Requete = "select * from Agent where Login ='" + UserLogin.Text + "' and PPR = '" + UserPass.Text + "'";
另外,您应该研究sql注入和参数化查询。我不太使用DataAdapters,但我相信它会看起来像。
SqlConnection connection = new SqlConnection("data source=LOCALHOST;initial catalog=CVtech;Integrated Security=false;User ID=sa;Password=123");
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand command = new SqlCommand("select * from Agent where Login = @login and PPR = @ppr", connection);
command.Parameters.Add("@login", SqlDbType.NVarChar, 50);
command.Parameters["@login"].Value = UserLogin.Text;
command.Parameters.Add("@ppr", SqlDbType.NVarChar, 50);
command.Parameters["@ppr"].Value = UserPass.Text;
da.SelectCommand = command;
DataSet Ds = new DataSet();
da.Fill(Ds);
有关更多详细信息,请参见
如何:保护ASP.NET中的SQL注入
http://msdn.microsoft.com/en-us/library/ff648339.aspx
SqlDataAdapter.SelectCommand属性
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句