将检索到的dept的SQL值分配给Session [“UserAuthentication”]

时间:2013-03-23 17:37:53

标签: c# asp.net mysql

我正在从表ts_dept中使用C#编写的以下SQL查询检索dept的值 - 在Session["UserAuthentication"]时如何将其分配给(CurrentName != null)

   protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        string username = Login_Box.UserName;
        string pwd = Login_Box.Password;

        string strConn;
        strConn = WebConfigurationManager.ConnectionStrings["team13ConnectionString"].ConnectionString;
        SqlConnection Conn = new SqlConnection(strConn);
        Conn.Open();

        string sqlUserName;
        sqlUserName = "SELECT dept FROM ts_dept WHERE id=@username AND pass=@pwd";

        SqlCommand com = new SqlCommand(sqlUserName, Conn);
        com.Parameters.Add("@username", username);
        com.Parameters.Add("@pwd", pwd);

        string CurrentName;
        CurrentName = (string)com.ExecuteScalar();

        if (CurrentName != null)
        {
            Session["UserAuthentication"] = username;
            Session.Timeout = 1;
            Response.Redirect("Default.aspx");
        }
        else
        {
            Session["UserAuthentication"] = "";
        }
    }

1 个答案:

答案 0 :(得分:1)

从内存开始(不是在我的C#机器上),但试试这个:

object CurrentName = com.ExecuteScalar();
if (CurrentName != null && CurrentName != System.DBNull.Value) {
    {
        Session["UserAuthentication"] = (string)CurrentName;
        Session.Timeout = 1;
        Response.Redirect("Default.aspx");
    }
    else
    {
        Session["UserAuthentication"] = "";
    }
}

如果我没记错的话,如果查询没有返回结果,则CurrentName为null;如果查询返回结果但是ts_dept.dept为null,则为Current.DBNull.Value。

另请注意关于使用Session进行身份验证的注释 - 如果您处于负载平衡群集中,那么它将无法正常工作。开始将其切换为Forms身份验证。