C# 注册事件时ASP.NET出现故障

C# 注册事件时ASP.NET出现故障,c#,asp.net,ms-access,event-handling,C#,Asp.net,Ms Access,Event Handling,我们是两个学生,他们正试图开发一个具有asp.net功能的网站。我们谈到这个问题: 我们有一个预订页面,登录用户可以在其中注册活动,我们为处理注册制作了一个单独的选项卡 在这个表中,我们有从会话中获得的成员id和事件id 然后,我们继续检查数据库中的成员id和事件id,以确保同一成员不能注册同一事件两次 protected void Page_Load(object sender, EventArgs e) { if (Session["Medlems_id"] == null)

我们是两个学生,他们正试图开发一个具有asp.net功能的网站。我们谈到这个问题:

我们有一个预订页面,登录用户可以在其中注册活动,我们为处理注册制作了一个单独的选项卡

在这个表中,我们有从会话中获得的成员id和事件id

然后,我们继续检查数据库中的成员id和事件id,以确保同一成员不能注册同一事件两次

protected void Page_Load(object sender, EventArgs e)
{
    if (Session["Medlems_id"] == null)

        Response.Redirect("medlemslogin.aspx");
    if (!IsPostBack)
    {
        if (Session["RedirectedMessage"] != null)
        {
            lblmessage.Text = Session["RedirectedMessage"].ToString();
            Session["RedirectedMessage"] = null;
        }
    }
}

protected void GridView1_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    // Få fat i Hold_id fra den valgte kolonne og gem det i variablen varHold_id
    var varHold_id = GridView1.Rows[Convert.ToInt32(e.CommandArgument)].Cells[6].Text;

    //DB CONNECTION 
    string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\drt.mdb;Jet OLEDB:Database Password=password";
    OleDbConnection MyConn = new OleDbConnection(ConnStr);

    MyConn.Open();

    OleDbCommand Cmd = new OleDbCommand(StrCmd, MyConn);

    Cmd.CommandText = "SELECT * FROM Booking WHERE Hold_ID = @Hold_idPar";
    Cmd.Parameters.AddWithValue("Hold_idPar", varHold_id);

    OleDbDataReader ObjReader = Cmd.ExecuteReader();

    if (ObjReader.Read())
    {
        var antalPladser = Convert.ToInt32(ObjReader["Pladser"]);
        var antalTilmeldte = Convert.ToInt32(ObjReader["Tilmeldte"]);
        var holdnavn = Convert.ToString(ObjReader["Hold"]);
        var Medlems_idva = Session["Medlems_id"];



        if (antalPladser > 0)
        {


            OleDbCommand dbcmd = new OleDbCommand(StrCmd, MyConn);
            dbcmd.CommandText = "Select Hold_id FROM Tilmelding WHERE Hold_id = @Hold_idPar AND Medlems_id = @Medlems_idPar";
            dbcmd.Parameters.AddWithValue("Medlems_idPar", Medlems_idva);
            dbcmd.Parameters.AddWithValue("Hold_idPar", varHold_id);



            OleDbDataReader ValReader = dbcmd.ExecuteReader();
            if (ValReader.Read())
            {
                lblmessage.Text= "Du er allerede tilmeldt";
            }

            else {
            OleDbCommand Cmd3 = new OleDbCommand(StrCmd, MyConn);
            Cmd3.CommandText = "UPDATE Booking SET Tilmeldte = Tilmeldte+1, Pladser = Pladser-1 WHERE Hold_ID = @Hold_idPar";
            Cmd3.Parameters.AddWithValue("Hold_idPar", varHold_id);
            Cmd3.ExecuteNonQuery();

            OleDbCommand Cmd2 = new OleDbCommand(StrCmd, MyConn);
            Cmd2.CommandText = "INSERT INTO Tilmelding (Medlems_id, Hold_ID) VALUES (@Medlems_idPar, @Hold_idPar)";
            Cmd2.Parameters.AddWithValue("Medlems_idPar", Medlems_idva);
            Cmd2.Parameters.AddWithValue("Hold_idPar", varHold_id);
            Cmd2.ExecuteNonQuery();



            Session["RedirectedMessage"] = "Du er tilmeldt holdet" + holdnavn;
            Response.Redirect("Kalender.aspx");
            }
            //Response.Redirect("Kalender.aspx");
        }
        else
        {
            lblmessage.Text = "Der er ikke flere pladser";
        }
    }
    ObjReader.Close();
    MyConn.Close();
}

private object Int32(object p)
{
    throw new NotImplementedException();
}


public string StrCmd { get; set; }
我们现在的问题是,会员可以继续报名参加活动。但是,如果事件ID和成员ID相同,那么出于某种原因,它可以正常工作

以下是数据库的一些翻译,因为我们使用丹麦单词命名数据库

    Hold_id=Event_id

    Medlems_id=Member_id

希望您能帮助我们,因为我们的头发已经变白。

在插入之前,您可以使用以下查询:

select Event_Table.Event_Id from Event_Table inner join Member_Table
on Event_Table.Event_Id=Member_Table.Event_Id 
如果从上述查询中选择的事件Id与会话中的事件Id匹配,则不要注册该成员。
(假设包含事件的表是“Event\u table”,包含成员注册的表是“Member\u table”)

我不太明白,Event\u table是指包含事件的表的名称还是?