我正在使用的代码如下。这是使用Session的正确方法吗?如果我做Session,我如何调用companyID和userID来澄清。是Session.Contents还是Session.Keys?这是我第一次使用session,我知道我使用httpcontact.current.user来访问大部分内容,但我不知道如何访问数据的每个部分。
谢谢!
MySqlConnection cn = new MySqlConnection("Server=localhost;Database=users; User=root;Password=00;");
cn.Open();
string storedProcedureName = "VLID";
MySqlCommand cmd = new MySqlCommand(storedProcedureName, cn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@userName", this.Login1.UserName);
cmd.Parameters.Add("@passwordID", this.Login1.Password);
MySqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
string userID = dr["userID"].ToString();
string companyID = dr["CompanyID"].ToString();
string sessionID = Session.SessionID.ToString();
Session.Add(companyID, "companyID");
Session.Add(userID, "userID");
e.Authenticated = true;
Response.Redirect("index.html");
// Event Authenticate is true
}
答案 0 :(得分:3)
您稍微向后调用Session.Add方法:
Session.Add
按顺序获取一个键和一个值;因此,在你想要的代码上:
Session.Add("companyID",companyID );
Session.Add("userID",userID );
但相反,你也可以这样做:
Session["companyID"]=companyID;
Session["userID"]=userID;
然后,每当您需要检索先前存储的userID值时,您可以执行以下操作:
string userID= Session["userID"] as string;
作为旁注,我不会像你一样在UI代码上混用数据访问代码。
从数据库获取数据的代码应该移动到数据访问层(DAL)。
当您实例化数据库连接时,请始终将其括在using
语句中,以便在它超出范围时正确处理:
using(MySqlConnection cn = new MySqlConnection("Server=localhost;Database=users; User=root;Password=00;"))
{
cn.Open();
//rest of the code
}