从数据库的不同行中检索一个值到标签 ASP.NET

Retrive a value from different rows from database to lable ASP.NET

我在 ASP.NET 中有一个作业使用 Visual Studio

我创建了三个网络表单并将它们连接到数据库(注册网络表单、登录网络表单、UserDetailWebform)

当我使用登录页面时,它会将我发送到用户详细信息页面,在用户详细信息页面中,它总是显示数据库中第一个帐户的第一个全名和电子邮件,而对于另一个帐户,它不会显示任何内容(标签不会变)

这是我的数据库

enter image description here

例如:当我在登录页面上按登录时,我想查看 Kelly 的全名和她的电子邮件,在我下面的代码中,我只能看到第一个帐户的全名和电子邮件,其他帐户我无法检索到他们的全名和电子邮件

我在 UserDetail 页面中使用的代码

  protected void Page_Load(object sender, EventArgs e)
    {
        con.Open();
        string checkUser = "select * from userDetail";
        SqlCommand com = new SqlCommand(checkUser, con);
        SqlDataReader dr = com.ExecuteReader(); 
        if (dr.Read())
        {
            if (Session["Email"].ToString() == dr["Email"].ToString())
            {
                Label1.Text = dr["Fname"].ToString();
                Label2.Text = dr["Email"].ToString();
            }
           
            

        }

    }

好吧,Read() 命令一次只读取一行。

我建议你这样做:

        using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.TEST4))
        {
            string strSQL = "SELECT * FROM userDetail WHERE email = @email";
            using (SqlCommand cmdSQL = new SqlCommand(strSQL, conn))
            {
                conn.Open();
                cmdSQL.Parameters.Add("@email", SqlDbType.NVarChar).Value = Session["Email"];

                DataTable rstData = new DataTable();
                rstData.Load(cmdSQL.ExecuteReader());
                Label1.Text = rstData.Rows[0]["Fname"].ToString();
                Label2.Text = rstData.Rows[0]["Email"].ToString();
            }
        }