gpt4 book ai didi

c# - 同时从网络上的多台计算机访问托管在一台服务器上的 ASP.net 应用程序

转载 作者:行者123 更新时间:2023-11-29 12:00:29 25 4
gpt4 key购买 nike

我为我的大学设计了一个投票应用程序(学生将为他们的系老师投票)。我已将该站点托管在服务器上,从网络上的其他计算机访问该站点没有问题。但是,当某人正在访问数据库表(用于投票的教师表)并且同时其他人试图从另一台机器访问同一个表时,就会出现问题。假设第一个用户正在投票给 2 号老师。同时,第二个用户完成了对老师 1 的投票,并且当他尝试通过单击“下一步”来获得第二个老师时。但系统返回第三位老师,依此类推。

我应该怎么做才能解决这个问题?

voting.aspx.cs 页面的编码

public partial class voting : System.Web.UI.Page
{
MySqlConnection con = new MySqlConnection("Data Source=localhost; Database=dkd; User Id=root; Password=;");
static string tid;
static int i;
protected void Page_Load(object sender, EventArgs e)
{
Session["dept"] = "Physics";
if (!IsPostBack)
{
i = 2;
loadTeacher(i);
}

}
void loadTeacher(int x)
{
MySqlDataAdapter da = new MySqlDataAdapter("Select * from teachers where department='" + Session["dept"].ToString() + "' order by tid asc", con);
DataSet ds = new DataSet();
da.Fill(ds);
int n=ds.Tables[0].Rows.Count;
//if (n == 0)
//{
// x++;
// loadTeacher(x);
//}
if (x >= n)
{
return;
}
if (n > 0)
{
tid = ds.Tables[0].Rows[x].ItemArray[0].ToString();
lbtid.Text = ds.Tables[0].Rows[x].ItemArray[0].ToString();
lbname.Text = ds.Tables[0].Rows[x].ItemArray[1].ToString();
lbdept.Text = ds.Tables[0].Rows[x].ItemArray[2].ToString();
lbage.Text = ds.Tables[0].Rows[x].ItemArray[3].ToString();
lbsex.Text = ds.Tables[0].Rows[x].ItemArray[4].ToString();
Image1.ImageUrl = "~/Photos/" + ds.Tables[0].Rows[x].ItemArray[5].ToString();
}
}
protected void btnsubmit_Click(object sender, EventArgs e)
{
con.Open();
MySqlCommand com = new MySqlCommand("insert into rating values(null,'" + lbtid.Text + "','" + lbdept.Text + "','" + ddq1.Text + "','" + ddq2.Text + "','" + ddq3.Text + "','" + ddq4.Text + "','" + ddq5.Text + "','" + ddq6.Text + "','" + ddq7.Text + "','" + ddq8.Text + "','" + ddq9.Text + "','" + ddq10.Text + "')", con);
com.ExecuteNonQuery();
int score;
score = Int32.Parse(ddq1.Text) + Int32.Parse(ddq2.Text) + Int32.Parse(ddq3.Text) + Int32.Parse(ddq4.Text) + Int32.Parse(ddq5.Text) + Int32.Parse(ddq6.Text) + Int32.Parse(ddq7.Text) + Int32.Parse(ddq8.Text) + Int32.Parse(ddq9.Text) + Int32.Parse(ddq10.Text);
MySqlDataAdapter da = new MySqlDataAdapter("Select total from score where teacherid='" + lbtid.Text + "'", con);
DataSet ds = new DataSet();
da.Fill(ds);
int tot = Convert.ToInt32(ds.Tables[0].Rows[0].ItemArray[0]);
tot = tot + score;
MySqlCommand com1 = new MySqlCommand("Update score set total='" + tot + "' where teacherid ='" + lbtid.Text + "'", con);
com1.ExecuteNonQuery();
con.Close();
clearfields();
i++;
loadTeacher(i);
}

}

最佳答案

名称恰当的static int i,它保存“当前教师索引”,它是静态的,或者在同一 AppDomain 中的所有访问者之间共享。

不要使其静态,将其保存在 session 中。

关于c# - 同时从网络上的多台计算机访问托管在一台服务器上的 ASP.net 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32454435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com