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

时间:2015-01-08 16:57:43

标签: asp.net .net database session select

我是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 :(得分: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,变量会话只存储第一个

答案 1 :(得分: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();
 }

您可以对此代码进行大量改进(查看使用参数化查询),但这有望为您提供您正在寻找的内容。