ASP.net删除SQL表C#中的索引

时间:2012-10-19 00:15:32

标签: c# asp.net sql-server-2012 delete-row

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

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但是得到了相同的结果,我没有收到错误但是一旦我点击删除,我就会被重定向到我的登录页面,似乎我仍然可以登录

有人可以帮忙吗?

2 个答案:

答案 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.";

        }
    }

}