首页 文章

如何将从“select”查询获得的值存储到ASP.net中的会话变量中

提问于
浏览
0

我是ASP.net的新手 . 我一直从Session []变量中获取值并存储到Session变量中,但是我无法存储在ASP.net中运行SELECT查询后获得的值 .

示例: Select Fname, Mname , Lname from employee

运行此查询后,我想将“Fname”,“Mname”和“Lname”的值存储在3个单独的会话变量中,以便我可以从这些变量中检索所有其他页面 .

继承我的代码以检查它是否是有效用户 . 我想要的是,一旦通过身份验证,其所有数据都将从数据库中获取并存储在会话变量中,以便可以直接在所有页面上使用它们 .

`protected void Button1_Click(object sender,EventArgs e){SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings [“UserDetailsForGridViewConnectionString”] . ConnectionString); conn.Open();

string loginCheck = " select count(*) from USERDETAILS where EMPLOYEEID='" + TextBox1.Text + "' and PASSWORD='" + TextBox2.Text + "'";
        SqlCommand myloginCheckcmd = new SqlCommand(loginCheck, conn);
        int temp = Convert.ToInt32(myloginCheckcmd.ExecuteScalar().ToString());
        if (temp == 1)
        {
            LoginStatus.Text = "SUCCESS !!";
            temp = 0;
            Session["EMPLOYEEID_sn"] = TextBox1.Text;
            Session["IsLogin"] = "yesLogin";
            //TextBox1.Text = "";              
            Response.Redirect("~/CustomPages/Lecturer_PersonalDetailsPage.aspx");
            conn.Close();


        }
        else 
        {
            LoginStatus.Text = "Invalid Username/Password";
            temp = 0;
            TextBox1.Text = "";
            conn.Close();

        }


    }`

2 回答

  • 0

    您需要修改select语句以恢复您正在寻找的字段 . 我不熟悉你的数据库,但它会是这样的:

    Select Fname, Mname , Lname from employee inner join USERDETAILS on employee.employeeid = userdetails.employeeid
    

    然后使用ExecuteReader而不是ExecuteScalar,如下所示:

    var rdr = myloginCheckcmd.ExecuteReader();
    if(rdr.HasRows)
    {
        while(rdr.Read())
        {
          Session("fname") = rdr[0];
          Session("mname") = rdr[1];
          Session("lname") = rdr[2];
        }
         LoginStatus.Text = "SUCCESS !!";
         Response.Redirect("~/CustomPages/Lecturer_PersonalDetailsPage.aspx");
            conn.Close();
    
    
    }
    else 
    {
       LoginStatus.Text = "Invalid Username/Password";
       TextBox1.Text = "";
       conn.Close();
     }
    

    您可以对此代码进行许多改进(查看使用参数化查询),但这有望为您提供所需的内容 .

  • 0

    如果你用C#开发,你可以使用:

    DataSet ds = new DataSet();
    ds = result of query;
    Session["fname"] = ds.Tables[0].Rows[0]["FNAME"];
    Session["mname"] = ds.Tables[0].Rows[0]["MNAME"];
    Session["lname"] = ds.Tables[0].Rows[0]["LNAME"];
    

    如果您使用vb开发,则可以使用:

    Dim ds As New DataSet()
    ds = return of query
    Session("fname") = ds.Tables(0).Rows(0)("FNAME")
    Session("mname") = ds.Tables(0).Rows(0)("MNAME")
    Session("lname") = ds.Tables(0).Rows(0)("LNAME")
    

    注意:您必须确定查询中的结果数,因为查询返回的结果超过1,变量会话只存储第一个

相关问题