【问题标题】:How to query a database that matches a specific name in a foreign key?如何查询与外键中特定名称匹配的数据库?
【发布时间】:2015-09-13 11:26:07
【问题描述】:

我的数据库 Student 和 Subject 中有两个表。我在 StudentID(学生的主键)和主题的外键之间建立了关系。

这是我的主题的数据列表:

如何选择与外键匹配的所有数据(Subject 的StudentID)示例:2011017997 以显示课程编号、课程描述、单位、日期、开始时间等。

我想使用 session 将我的主题数据显示为下一页中的 Gridview。

这是我背后的 aspx 代码:

    string query = null;
    string subjectquery = null;
    int rowcounter = 0;
    private DataSet studentData;
    private DataSet subjectData;
    private DataTable subjectTable;

    protected void Button1_Click(object sender, EventArgs e)
    {
        //Connection String
        connector.ConnectionString = "Data Source=keith;Initial Catalog=SAD;Integrated Security=True";

        //String decleration
        string username = (this.UserName.Value);
        string pass = (this.Password.Value);

        //query database from sql server management studio for student
        query = "select studentid,password,firstname,lastname,course,year from student";

        //query database from sql server management studio for subject
        subjectquery = "select CourseNo,CourseDescription,Units,Day,StartTime,EndTime,Room from subject";

        //execute query for student
        studentData = connector.ExecuteQuery(query);

        //execute query for subject
        subjectData = connector.ExecuteQuery(subjectquery);


        for (;;)
        {
            //string decleration and getting each rows of the Student database
            string userid = studentData.Tables[0].Rows[rowcounter]["StudentID"].ToString();
            string password = studentData.Tables[0].Rows[rowcounter]["Password"].ToString();
            string firstname = studentData.Tables[0].Rows[rowcounter]["FirstName"].ToString();
            string lastname = studentData.Tables[0].Rows[rowcounter]["LastName"].ToString();
            string course = studentData.Tables[0].Rows[rowcounter]["Course"].ToString();
            string year = studentData.Tables[0].Rows[rowcounter]["Year"].ToString();

            //get all subject data rows and store it into DataTable
            subjectTable = subjectData.Tables[0];

            //Username and Password are correct
            if ((username == userid) && (pass == password))
            {
                Session["login"] = userid;
                Session["firstname"] = firstname;
                Session["lastname"] = lastname;
                Session["course"] = course;
                Session["year"] = year;
                Session["Subjects"] = subjectTable;
                Response.Redirect("StudentPage.aspx", true);
                break;
            }
            //empty username and password
            else if (((username == "") && (pass == "")) || ((userid == null) && (password == null)))
            {
                Response.Write("<script language=javascript>alert('Username and password must have input value. Try again');</script>");
                break;
            }
            //username is invalid and password is correct ; username is correct and password is invalid
            else if (((username != userid) && (pass == password)) || ((username == userid) && (pass != password)))
            {
                Response.Write("<script language=javascript>alert('Username and password does not match. Try again');</script>");
                break;
            }
            else
            {
                rowcounter++;
            }
        }
    }

当程序显示结果时,显示的是该科目的所有数据,但不显示学生ID“2011017997”的数据。

我认为我的问题是查询,这个:

//query database from sql server management studio for subject
            subjectquery = "select CourseNo,CourseDescription,Units,Day,StartTime,EndTime,Room from subject";

这就是我在 Session 中显示我的 DataTable 的方式:

//execute query for subject
            subjectData = connector.ExecuteQuery(subjectquery);
//get all subject data rows and store it into DataTable
                subjectTable = subjectData.Tables[0];
Session["Subjects"] = subjectTable;

在另一个页面中使用GridView显示主题数据的代码:

//Subject Data
                subjectdata.DataSource = Session["Subjects"];
                subjectdata.DataBind();

如何比较或仅显示与以下 StudentID = 2011017997 匹配的以下主题?

【问题讨论】:

    标签: c# asp.net sql-server database gridview


    【解决方案1】:

    试试这个!

    subjectquery = "select * from subject where StudentID=2011017997";
    

    【讨论】:

    • 这很好,但它会显示所有列名,包括学生ID和教师ID。我想出了这样的东西:subjectquery = "select CourseNo,CourseDescription,Units,Day,StartTime,EndTime,Room from subject where studentid = 2011017997";
    • 是的,选择*表示显示表格中的所有列,您可以更改为您喜欢的。希望我的回答对你有所帮助!
    【解决方案2】:

    我的问题,我的答案?哈哈无论如何这里是我的问题的正确查询。感谢@boyshot17 的想法。

    //Get the value for input username
    string username = (this.UserName.Value);
    
    //query database from sql server management studio for subject
    subjectquery = "select CourseNo,CourseDescription,Units,Day,StartTime,EndTime,Room from subject where studentid = " + username + "";
    

    【讨论】:

      猜你喜欢
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多