我想在用户登录时,同时记录ID到Session里面,但我不想在表示层有填写主键ID,请问怎么写方法?
这是我登录时的方法
- C# code
public bool IsExists(string name, string pw, string rank) { bool flag = false; string sql = "select * from ManageAdmin where AdminName='" + name + "' and AdminPw='" + pw + "' and AdminRank='" + rank + "'"; DataTable dt = sqlhelper.ExecuteQuery(sql, CommandType.Text); if (dt.Rows.Count > 0) { flag = true; } return flag; }
------解决方案--------------------------------------------------------
你在实体层那边新建一个用户登录的实体类,那些属性的返回值都是session的值,并且在写入的set方法里面给相应的session赋值value,即那些id,username之类的,到时候你的主键ID之间在应用层调用这个实体类的属性就可以得到了
------解决方案--------------------------------------------------------
首先登录类中继承System.Web.UI.Page。
然后下面代码
- C# code
public bool IsExists(string name, string pw, string rank) { bool flag = false; string sql = "select * from ManageAdmin where AdminName='" + name + "' and AdminPw='" + pw + "' and AdminRank='" + rank + "'"; DataTable dt = sqlhelper.ExecuteQuery(sql, CommandType.Text); if (dt.Rows.Count > 0) { Session["ID"]=dt[0]["id"].ToString(); flag = true; } return flag; }
------解决方案--------------------------------------------------------
可以登录的同时返回ID
------解决方案--------------------------------------------------------
记得好像是@@identity,返回个就好了,还有拼接字符串有注入风险。
------解决方案--------------------------------------------------------
在登录是将ID查询出来然后保存到Session里面。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
可以用ExecuteScalar
性能会高
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
把实体类付给session