为什么我的数据用Session传不过来,看代码

li5025555 2011-03-12 06:23:33
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语句查询的是表中的一行数据啊,为什么有的传过来了,有的就没传过来呢,请给我写出正确的代码让我参考一下谢谢啦
...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
LoginTimes在数据库中或者实体中是否有初值,是否存在刚注册进来的用户跳转时,用户名和密码有值,但LoginTimes为空的情况?
子夜__ 2011-03-12
  • 打赏
  • 举报
回复
user.LoginTimes.ToString();

这个值为空。。

你在你取实体的地方

看看LoginTimes是不是没取出来
gdjlc 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 li5025555 的回复:]

我改了改成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还是传不过去,只有用户名和密码可以传的过去
[/Quote]


一般就是这么写

if (rdr.Read())
{
//赋值给user
user.AuthorName = rdr["AuthorName"].ToString();
user.LoginTimes = rdr["LoginTimes"].ToString();
//下面省略不写。。。
}
wangoqoq 2011-03-12
  • 打赏
  • 举报
回复
加上Session的超时时间
li5025555 2011-03-12
  • 打赏
  • 举报
回复
我改了改成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还是传不过去,只有用户名和密码可以传的过去
孟子E章 2011-03-12
  • 打赏
  • 举报
回复
UserInfo user = new UserInfo(AuthorName, Password);

你的UserInfo类写的有问题。你new之后,并没有去Load该用户的其他信息导致的
gdjlc 2011-03-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 li5025555 的回复:]
if (rdr.Read())
{
user = new UserInfo(rdr.GetString(0), rdr.GetString(1));
return user;
[/Quote]

你的new UserInfo构造函数怎么写的?


new UserInfo(rdr.GetString(0), rdr.GetString(1));这里只传两个值进来。。

62,253

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧