我有一个名为学生的表,我想删除学生信息,但首先我需要他/她在从表中删除之前重新输入他/她的登录详细信息(类似于停用您的帐户)
protected void btnLDelete_Click(object sender, EventArgs e)
{
{
string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VC_temps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection con = new SqlConnection(strcon);
SqlCommand com = new SqlCommand("CheckUser", con);
com.CommandType = CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("StudCode", TextBox1.Text);
SqlParameter p2 = new SqlParameter("Pword", TextBox2.Text);
com.Parameters.Add(p1);
com.Parameters.Add(p2);
con.Open();
SqlDataReader rd = com.ExecuteReader();
if (rd.HasRows)
{
string command = @"DELETE FROM Student WHERE StudCode= StudCode";
SqlCommand com2 = new SqlCommand(command, con);
SqlParameter q1 = new SqlParameter("StudCode", Session["StudCode"]);
com.Parameters.Add(q1);
Response.Redirect("Default.aspx");
}
else
{
Labelinfo.Text = "Invalid username or password.";
}
}
}
我也尝试使用SP但是得到了相同的结果,我没有收到错误但是一旦我点击删除,我就会被重定向到我的登录页面,似乎我仍然可以登录
有人可以帮忙吗?
答案 0 :(得分:1)
在if
语句中,您没有执行DELETE
,只是设置了一个新命令com2
。
然后将参数添加到旧com
命令对象。
您需要决定是否要使用旧命令,或继续使用新的com2,并将参数添加到正确的命令中。然后,您必须执行该命令。
我也非常确定您的变量StudCode
需要@
。完成后,if
看起来就像那样
rd.Close();
string command = @"DELETE FROM Student WHERE StudCode = @StudCode";
SqlCommand com2 = new SqlCommand(command, con);
SqlParameter q1 = new SqlParameter("@StudCode", Session["StudCode"]);
com2.Parameters.Add(q1); // Also com2 now
com2.ExecuteNonQuery(); // Added to run the query
Response.Redirect("Default.aspx");
根据CheckUser
返回的数据,最好先调用ExecuteScalar
来查找特定值,而不是CheckUser
存储过程是否为您提供一行
答案 1 :(得分:0)
如果有人对未来感兴趣,我可以通过一些帮助修复它
protected void btnDelete_Click(object sender, EventArgs e)
{
{
string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\VC_temps.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection con = new SqlConnection(strcon);
SqlCommand com = new SqlCommand("CheckUser", con);
com.CommandType = CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("StudCode", TextBox1.Text);
SqlParameter p2 = new SqlParameter("Pword", TextBox2.Text);
com.Parameters.Add(p1);
com.Parameters.Add(p2);
con.Open();
SqlDataReader rd = com.ExecuteReader();
if (rd.HasRows)
{
con.Close();
con.Open();
string command = @"DELETE FROM Student WHERE StudCode = @StudCode";
SqlCommand com2 = new SqlCommand(command, con);
SqlParameter q1 = new SqlParameter("@StudCode", Session["StudCode"]);
com2.Parameters.Add(q1); // Also com2 now
com2.ExecuteNonQuery(); // Added to run the query
Response.Redirect("Default.aspx");
}
else
{
Labelinfo.Text = "Invalid username or password.";
}
}
}