DAL层:
private const string SQL_SELECT_USERINFO_U_P = "select * from UserInfo where AuthorName=@AuthorName and PassWord=@PassWord";
public static UserInfo SelectUserInfo(UserInfo user)
        {
            using (SqlDataReader rdr = SQLHelper.ExecuteReader(CommandType.Text,
                SQL_SELECT_USERINFO_U_P,
                new SqlParameter("@AuthorName",user.AuthorName),
                new SqlParameter("@PassWord",user.PassWord)))
            {
                if (rdr.Read())
                {
                   user = new UserInfo(rdr.GetString(0), rdr.GetString(1));
                   return user;
                   rdr.Close();
                }
                return null;
            }
        }
BLL层:
public static UserInfo SelectUserInfo(UserInfo user)
        {
            return UserInfoService.SelectUserInfo(user);
        }
WEB层登陆页面:
rotected void Button1_Click(object sender, EventArgs e)
    {
        string AuthorName = this.txtUserName.Text.Trim();
        string Password = this.txtPassword.Text.Trim();        UserInfo user = new UserInfo(AuthorName, Password);        if (UserInfoManager.SelectUserInfo(user) == null)
        {
            this.lblErrorMessage.Text = "登录失败!";
        }
        else
        {
            user.LoginTimes++;
            Session["info"] = user;
            Response.Redirect("~/Main.aspx");        }
    }
登录后界面:
protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["info"]==null)
        {
            Response.Redirect("~/Default.aspx");
        }        UserInfo user = Session["info"] as UserInfo;        this.lblAuthorName.Text = user.AuthorName;
        this.lblDay.Text = DateTime.Now.ToString("yyyy-MM-dd");
        this.lblLoginTimes.Text = user.LoginTimes.ToString();
        this.lbldatetime.Text = DateTime.Now.ToString("hh:mm");    }
AuthorName可以正常传过来的,可是lblLoginTimes就不行,传不过来值的,我的SQL语句查询的是表中的一行数据啊,为什么有的传过来了,有的就没传过来呢,请给我写出正确的代码让我参考一下谢谢啦

解决方案 »

  1.   


    你的new UserInfo构造函数怎么写的?
     new UserInfo(rdr.GetString(0), rdr.GetString(1));这里只传两个值进来。。
      

  2.   

    UserInfo user = new UserInfo(AuthorName, Password);你的UserInfo类写的有问题。你new之后,并没有去Load该用户的其他信息导致的
      

  3.   

    我改了改成user = new UserInfo(rdr.GetString(0), rdr.GetString(1),rdr.GetString(2),rdr.GetInt32(3),rdr.GetString(4),rdr.GetInt32(5),rdr.GetString(6));
    把全部的字段都添加进去了,可是Session还是传不过去,只有用户名和密码可以传的过去
      

  4.   

    一般就是这么写if (rdr.Read())
    {
      //赋值给user
      user.AuthorName = rdr["AuthorName"].ToString();
      user.LoginTimes = rdr["LoginTimes"].ToString();
      //下面省略不写
     }
      

  5.   

    user.LoginTimes.ToString();这个值为空。。你在你取实体的地方 看看LoginTimes是不是没取出来
      

  6.   

    LoginTimes在数据库中或者实体中是否有初值,是否存在刚注册进来的用户跳转时,用户名和密码有值,但LoginTimes为空的情况?