Sql 多用户同时登录

Sql 多用户同时登录,sql,asp.net,sql-server-2008,c#-4.0,Sql,Asp.net,Sql Server 2008,C# 4.0,我创建了一个在线考试系统。一次只使用一个用户就可以正常工作。但是,当多个用户登录时会出现问题 每次考试有20道题。如果只有一个用户在做测试,它就可以正常工作。用户可以完成所有20个问题。现在,另一个用户同时登录。该用户没有得到全部20个问题。假设User1已经完成了12个问题。用户2只会得到8个问题 假设有User1、User2、User3同时登录。用户1问了8个问题,用户2问了6个问题,用户3也问了8个问题。他们都会在没有完成20个问题的情况下到达结果页面。这意味着如果有20个用户,他们只会得

我创建了一个在线考试系统。一次只使用一个用户就可以正常工作。但是,当多个用户登录时会出现问题

每次考试有20道题。如果只有一个用户在做测试,它就可以正常工作。用户可以完成所有20个问题。现在,另一个用户同时登录。该用户没有得到全部20个问题。假设User1已经完成了12个问题。用户2只会得到8个问题

假设有User1、User2、User3同时登录。用户1问了8个问题,用户2问了6个问题,用户3也问了8个问题。他们都会在没有完成20个问题的情况下到达结果页面。这意味着如果有20个用户,他们只会得到1个问题,而不是20个。有人能帮忙吗

  try
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["hasexaminationConnectionString"].ConnectionString);
            SqlCommand cmd = new SqlCommand();
            SqlDataReader dr;
            cmd.Connection = con;
            cmd.CommandText = "select * from tblregister where Name=@Name and EMail=@EMail";

            cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = TxtStName.Text;
            cmd.Parameters.Add("@EMail", SqlDbType.VarChar).Value = TxtStudentID.Text;
            //cmd.Parameters.Add("@Flag", SqlDbType.Int).Value = Convert.ToInt32(HiddenField1.Value);

            con.Open();
            dr = cmd.ExecuteReader();
            if (dr.Read())
            {
                FormsAuthentication.RedirectFromLoginPage(TxtStName.Text, false);
                Session["Name"] = TxtStName.Text;
                Session["EMail"] = TxtStudentID.Text;



                Response.Redirect("TestHome.aspx");

            }
            else
            {
                Label1.Visible = true;

                Label1.Text = "UserName or Password is Required/Incorrect.";
            }
        }
        catch
        { }
    }
下一页:

protected void Page_Load(object sender, EventArgs e)
{
    mob = HttpContext.Current.Session["Name"].ToString();
    number = HttpContext.Current.Session["EMail"].ToString();
    //Response.Cache.SetCacheability(HttpCacheability.NoCache);

    if (Session["mob"] == null & Session["number"] == null)
        //Response.Redirect("Home.aspx");

        if (!IsPostBack)
        {
            DataSet TestList = getTestList("GetTestList");
            DataList1.DataSource = TestList;
            DataList1.DataBind();
        }
}

public DataSet getTestList(string procedurename)
{
    using (DataSet QuestionSet = new DataSet())
    {
        using (DataTable QTable = new DataTable())
        {
            QTable.Columns.Add("TESTNAME");
            QTable.Columns.Add("TESTNUMBER");
            DataTable dt;



            cmd.Connection = con;

            cmd.CommandText = "select * from testnumber";
            using (Da = new SqlDataAdapter(cmd))
            {
                con.Open();
                dt = new DataTable();
                Da.Fill(dt);
                if (dt.Rows.Count > 0)
                {
                    DataRow dr;
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        dr = QTable.NewRow();

                        dr[0] = dt.Rows[i]["testname"].ToString();
                        dr[1] = dt.Rows[i]["testnumber"].ToString();

                        QTable.Rows.Add(dr);
                    }
                }
            }
            QuestionSet.Tables.Add(QTable);

            return QuestionSet;
        }
    }
}


protected void LinkButton_Click(object sender, CommandEventArgs e)
{
    string name = e.CommandArgument.ToString();
    Response.Redirect("TakeTest1.aspx?testno=" + e.CommandArgument.ToString());
}
下一步:

和结果页:

protected void Page_Load(object sender, EventArgs e)
{


    l = Session["Name"].ToString();
    m = Session["EMail"].ToString();


    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["hasexaminationConnectionString"].ConnectionString);
    SqlCommand cmd = new SqlCommand("select  tnumber,quation,ans1,ans2,ans3,ans4,ans  from test left join testdisplay on (test.ans= testdisplay.answ and test.quation= testdisplay.quations)  where UserName='" + Session["Name"] + "' and Password='" + Session["EMail"] + "'", con);
    con.Open();
    SqlDataAdapter adp = new SqlDataAdapter(cmd);

    adp.Fill(dt);
    con.Close();
    {
        int to = 20;
        GridView1.DataSource = dt;
        GridView1.DataBind();
        int marks = GridView1.Rows.Count;
        Label1.Text = Convert.ToInt32(GridView1.Rows.Count).ToString();
        decimal total = Convert.ToDecimal((double)marks / (double)20) * 100;
        lbltotal.Text = total.ToString();
    }

}
public void bind()
{
    // Write your code to get the summary of the result and display it


}
protected void Button1_Click(object sender, EventArgs e)
{
    //Response.Redirect("Home.aspx");
    string uniqueCode = string.Empty;

    //SqlDataReader dr;
    try
    {
        DataSet ds = new DataSet();
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["hasexaminationConnectionString"].ConnectionString))
        {

            con.Open();

            SqlCommand cmd = new SqlCommand("SELECT Name,EMail FROM tblregister Where EMail= '" + txtEmail.Text.Trim() + "'", con);

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);




                ////}


                if (Page.IsValid)
                {
                    //GridView1.RenderControl(hw);
                    const string SERVER = "relay-hosting.secureserver.net";
                    MailMessage oMail = new MailMessage();
                    oMail.From = new MailAddress("contact@dssgroups.com");
                    oMail.To.Add(new MailAddress(txtEmail.Text.Trim()));
                    oMail.Subject = "Your Test Details";
                    oMail.IsBodyHtml = true; // enumeration
                    oMail.Priority = MailPriority.High; // enumeration
                    oMail.Body = "Hi, <br/><b>Please check your Test Details:</b><br/><br/>Your Marks Percentage: " + lbltotal.Text+" % "+"<br/>For any query contact "+" http://dssgroups.com";
                    SmtpClient sC = new SmtpClient(SERVER);
                    sC.EnableSsl = false;
                    ContentType contentType = new ContentType();
                    contentType.MediaType = MediaTypeNames.Application.Octet;
                    contentType.Name = "xml.xml";
                    sC.Send(oMail);
                    oMail = null; // free up resources
                    lblMessage.ForeColor = System.Drawing.Color.DarkKhaki;
                    lblMessage.Text = "EMail Sent";
                    ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('EMail Sent');", true);
                }
                else
                {
                    lblMessage.Text = "The Email you entered not exists.";
                }
            }


            //}




        }

    catch (Exception ex)
    {
        Console.WriteLine("{0} Exception caught.", ex);
    }
}


protected void Button2_Click(object sender, EventArgs e)
{

    Session.Clear();
    Session.Abandon();
    Response.Redirect("default.aspx");

}

欢迎使用stack overflow,请不要将您的全部代码放在这里。首先确定您的问题出在哪里,然后仅将这部分代码放在这里,以获取其他人的意图。好的,我不会将我的全部代码放在这里。我使用了调试器,它正在服务器上运行,但问题是相同的。。。。米奇·惠特你有静电的东西吗?所有用户都共享这些字段。先生,这就是为什么我问这个问题,以便我可以完成共享。。。。
protected void Page_Load(object sender, EventArgs e)
{


    l = Session["Name"].ToString();
    m = Session["EMail"].ToString();


    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["hasexaminationConnectionString"].ConnectionString);
    SqlCommand cmd = new SqlCommand("select  tnumber,quation,ans1,ans2,ans3,ans4,ans  from test left join testdisplay on (test.ans= testdisplay.answ and test.quation= testdisplay.quations)  where UserName='" + Session["Name"] + "' and Password='" + Session["EMail"] + "'", con);
    con.Open();
    SqlDataAdapter adp = new SqlDataAdapter(cmd);

    adp.Fill(dt);
    con.Close();
    {
        int to = 20;
        GridView1.DataSource = dt;
        GridView1.DataBind();
        int marks = GridView1.Rows.Count;
        Label1.Text = Convert.ToInt32(GridView1.Rows.Count).ToString();
        decimal total = Convert.ToDecimal((double)marks / (double)20) * 100;
        lbltotal.Text = total.ToString();
    }

}
public void bind()
{
    // Write your code to get the summary of the result and display it


}
protected void Button1_Click(object sender, EventArgs e)
{
    //Response.Redirect("Home.aspx");
    string uniqueCode = string.Empty;

    //SqlDataReader dr;
    try
    {
        DataSet ds = new DataSet();
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["hasexaminationConnectionString"].ConnectionString))
        {

            con.Open();

            SqlCommand cmd = new SqlCommand("SELECT Name,EMail FROM tblregister Where EMail= '" + txtEmail.Text.Trim() + "'", con);

            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(ds);




                ////}


                if (Page.IsValid)
                {
                    //GridView1.RenderControl(hw);
                    const string SERVER = "relay-hosting.secureserver.net";
                    MailMessage oMail = new MailMessage();
                    oMail.From = new MailAddress("contact@dssgroups.com");
                    oMail.To.Add(new MailAddress(txtEmail.Text.Trim()));
                    oMail.Subject = "Your Test Details";
                    oMail.IsBodyHtml = true; // enumeration
                    oMail.Priority = MailPriority.High; // enumeration
                    oMail.Body = "Hi, <br/><b>Please check your Test Details:</b><br/><br/>Your Marks Percentage: " + lbltotal.Text+" % "+"<br/>For any query contact "+" http://dssgroups.com";
                    SmtpClient sC = new SmtpClient(SERVER);
                    sC.EnableSsl = false;
                    ContentType contentType = new ContentType();
                    contentType.MediaType = MediaTypeNames.Application.Octet;
                    contentType.Name = "xml.xml";
                    sC.Send(oMail);
                    oMail = null; // free up resources
                    lblMessage.ForeColor = System.Drawing.Color.DarkKhaki;
                    lblMessage.Text = "EMail Sent";
                    ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('EMail Sent');", true);
                }
                else
                {
                    lblMessage.Text = "The Email you entered not exists.";
                }
            }


            //}




        }

    catch (Exception ex)
    {
        Console.WriteLine("{0} Exception caught.", ex);
    }
}


protected void Button2_Click(object sender, EventArgs e)
{

    Session.Clear();
    Session.Abandon();
    Response.Redirect("default.aspx");

}