如何存储到会话中并显示当前用户信息
Posted
技术标签:
【中文标题】如何存储到会话中并显示当前用户信息【英文标题】:how to store into a session and display current users information 【发布时间】:2018-12-15 20:07:01 【问题描述】:public class UserDA
private static string _connStr = ConfigurationManager.ConnectionStrings["airmazin"].ConnectionString;
//update,delete,insert,getuser
public static void UserInsert(User user)
string queryStr = "INSERT INTO Account (username, gender, email, password) values (@username, @gender, @email, @password);";
SqlConnection conn = new SqlConnection(_connStr);
SqlCommand cmd = new SqlCommand(queryStr, conn);
cmd.Parameters.AddWithValue("@username", user.userName);
cmd.Parameters.AddWithValue("@gender", user.gender);
cmd.Parameters.AddWithValue("@email", user.email);
cmd.Parameters.AddWithValue("@password", user.password);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
protected void btn_Submit_Click(object sender, EventArgs e)
string userName = tb_userName.Text;
string gender = rbl_gender.SelectedValue.ToString();
string email = tb_email.Text;
string password = tb_password.Text;
User user = new User(userName, gender, email, password);
UserDA.UserInsert(user);
protected void Page_Load(object sender, EventArgs e)
protected void btn_Login_Click(object sender, EventArgs e)
//if (txt_userEmail == null)
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["airmazin"].ToString());
con.Open();
string query = "select count from Account where email='" + txt_userEmail.Text+ "' and password='" + txt_userPass.Text +"'" ;
SqlCommand cmd = new SqlCommand(query, con);
string output = cmd.ExecuteScalar().ToString();
con.Close();
if (output == "1")
// Create a session
Session["Account"] = txt_userEmail.Text;
Response.Redirect("User_Profile.aspx");
else
Response.Write("<script>alert('Login NOT successful');</script>");
protected void btn_loginSignup_Click(object sender, EventArgs e)
Response.Redirect("SignUp.aspx");
我已将数据插入数据库,如何将其存储到会话中并在我的个人资料页面上显示当前用户信息(例如:用户名、电子邮件、性别等)。
【问题讨论】:
不要做select count
,因为它会给你记录的数量。获取您需要的实际信息,然后将其存储在会话中。
我使用了 select count * 。我正在获取信息,因为我登录了这就是为什么我必须使用数据库检查用户名和密码@CodingYoshi
使用管理工作室或其他工具运行查询select count *
,看看你得到了什么。 select count *
不起作用,因为它有语法错误。 select count(*)
可以工作,但会返回一个数字。您需要获取用户名、电子邮件、姓名等(无论您需要什么),因此请使用 select username, email...
【参考方案1】:
-
您可以通过 访问 aspx 中的会话值
你应该将SqlConnection包裹在一个using语句中,否则异常时你的连接不会被释放。
使用 (SqlConnection 连接 = 新的 SqlConnection(connectionString)) //你的代码
【讨论】:
以上是关于如何存储到会话中并显示当前用户信息的主要内容,如果未能解决你的问题,请参考以下文章
使用带护照本地的护照Facebook策略时无法将用户序列化到会话中