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 に答える