我是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 回答
您需要修改select语句以恢复您正在寻找的字段 . 我不熟悉你的数据库,但它会是这样的:
然后使用ExecuteReader而不是ExecuteScalar,如下所示:
您可以对此代码进行许多改进(查看使用参数化查询),但这有望为您提供所需的内容 .
如果你用C#开发,你可以使用:
如果您使用vb开发,则可以使用:
注意:您必须确定查询中的结果数,因为查询返回的结果超过1,变量会话只存储第一个