如何向不同的用户显示不同的数据?

时间:2018-09-28 06:19:06

标签: c# sql database

让我们说父母已经登录系统,我想在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 = ";

任何建议和参考都受到赞赏

1 个答案:

答案 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参数传递,请确保它是经过身份验证的内容并保留在服务器端,以便可以不会轻易使您遭受欺骗和注入攻击