我正在从表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"] = "";
}
}
答案 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身份验证。