我想编写一个代码,用户可以通过该代码在登录后停用他的帐户。在登录页面中,我创建了一个会话并在停用帐户页面的页面加载方法中获取它。这是我的删除查询,但不适用于会话值。
String SQLQuery = "DELETE FROM SignUp Where Password=\'" + txtPassword.Text + "\' AND EmailAddress= \'" + Session["email"]+ "\'";
会话后你错过了“ToString()”方法[“email”]
像这样
session["email"].ToString()
建议在使用前检查会话是否可用
if(Session["email"] != null)
{
String SQLQuery = "DELETE FROM SignUp Where Password=\'" + txtPassword.Text + "\' AND EmailAddress= \'" + Session["email"].Tostring() + "\'";
}
else
{
//session timeout
}
还有一件事,你的 sql 代码会让你暴露于 sqlinjection .. 建议你使用 Parameterize 来执行 sql 查询以避免 sql injection 。像这样
if(Session["email"] != null)
{
string password = txtPassword.Text;
string email = Session["email"].Tostring();
String SQLQuery = "DELETE FROM SignUp Where Password=@pass AND EmailAddress=@email";
SqlCommand dbComm = new SqlCommand(SQLQuery , new SqlConnection() );
dbComm.Parameters.Add("@pass", SqlDbType.NVarChar).Value = password ;
dbComm.Parameters.Add("@pass", SqlDbType.NVarChar).Value = email ;
//execute sql
}
else
{
//session timeout
}