让我们说父母已经登录系统,我想在GridView控件中仅向他们显示孩子的详细信息。同一所学校最多可以有一个孩子。我该如何实现?我试图将数据库中的3个表联接起来,并以这种方式显示在GridView中:
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source = DESKTOP-H7KQUT1; Initial Catalog = SAOS; Integrated Security = True");
String query = "SELECT s.FName FROM student s INNER JOIN student_parent sp ON s.SID = sp.SID INNER JOIN parent p ON sp.PID = p.PID WHERE p.PID = ";
SqlCommand cmd = new SqlCommand(query, con);
SqlDataReader dr;
con.Open();
dr = cmd.ExecuteReader();
GridView1.DataSource = dr;
GridView1.DataBind();
con.Close();
}
我可以成功显示学生详细信息,但是我不知道如何向不同的父母显示不同的学生详细信息。我停留在这一行:
String query = "SELECT s.FName FROM student s INNER JOIN student_parent sp ON s.SID = sp.SID INNER JOIN parent p ON sp.PID = p.PID WHERE p.PID = ";
任何建议和参考都受到赞赏
答案 0 :(得分:2)
如果我了解您的架构,就好像您已经掌握了它:您需要通过查看哪个用户登录到您的Web应用程序来获取父级ID(pid)。然后,您将使用该信息来最有可能执行查询以查找pid。然后,将其作为参数以“ where p.pid=@PID”的形式传递给您的SQL语句。以下是一些有关如何使用参数构造查询的文档:https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.parameters?view=netframework-4.7.2
仅需提一个警告:请特别小心如何获取和验证父ID(即,不要只是将其作为URL参数传递,请确保它是经过身份验证的内容并保留在服务器端,以便可以不会轻易使您遭受欺骗和注入攻击