0

我有一个名为学生的表,我想删除一个学生信息,但首先我需要他/她在从表中删除他/她之前重新输入他/她的登录详细信息(有点像停用您的帐户)

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,但结果相同,我没有收到错误消息,但只要单击删除,我就会被重定向到我的登录页面,似乎我仍然可以登录

有人可以帮忙吗?

4

2 回答 2

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可能是一个更好的主意。ExecuteScalarCheckUser

于 2012-10-19T00:19:55.993 回答
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.";

        }
    }

}
于 2012-10-19T00:35:22.613 回答