C# 注册事件时ASP.NET出现故障
我们是两个学生,他们正试图开发一个具有asp.net功能的网站。我们谈到这个问题: 我们有一个预订页面,登录用户可以在其中注册活动,我们为处理注册制作了一个单独的选项卡 在这个表中,我们有从会话中获得的成员id和事件id 然后,我们继续检查数据库中的成员id和事件id,以确保同一成员不能注册同一事件两次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)
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是指包含事件的表的名称还是?