asp会话正确使用和可能的接口使用

时间:2011-11-09 17:39:31

标签: c# asp.net .net-4.0

我正在使用的代码如下。这是使用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  
    }

1 个答案:

答案 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
}