如何将从 "select" 查询中获得的值存储到 ASP.net 中的会话变量中
How do I store values obtained from the "select" query into the Session Variables in ASP.net
我是 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();
}
}`
如果您使用 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")
注意:一定要确定查询的结果数,因为查询returns多于1个结果,变量session只存储第一个
您需要修改 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();
}
您可以对此代码进行很多改进(考虑使用参数化查询),但这有望为您提供所需的内容。
我是 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();
}
}`
如果您使用 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")
注意:一定要确定查询的结果数,因为查询returns多于1个结果,变量session只存储第一个
您需要修改 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();
}
您可以对此代码进行很多改进(考虑使用参数化查询),但这有望为您提供所需的内容。