在 ASP/C# 网页中从 MS Access 数据库中查询连接表

Posted

技术标签:

【中文标题】在 ASP/C# 网页中从 MS Access 数据库中查询连接表【英文标题】:Query a Junction Table from MS Access Database in a ASP / C# Webpage 【发布时间】:2013-05-16 01:03:02 【问题描述】:

我正在编写一个 ASP 页面,其中:学生登录 -> 学生到达欢迎页面,带有链接以显示他们已注册的课程 -> 链接页面显示课程信息、描述等。

我的 MS Access 数据库有 3 个表:学生(包含学生信息)、课程(课程信息,如 ID、描述等)和 EnrolledCourses(其中 EnrolledCourses 是一个连接表 - 我认为这是正确的term - 学生和课程代表学生已注册的课程)。

我需要显示他们注册了哪些课程以及课程信息,因此来自 EnrolledCourses 的数据告诉了已注册的课程,而来自 Courses 的数据则提供了课程的详细信息。我在弄清楚查询将是什么来提取该信息时遇到了麻烦。到目前为止,这是我想出的:

               
        //Give the command SQL to execute   
    comm.CommandText = "SELECT Courses.Id, Courses.CourseSubject, Courses.CourseName, Courses.CourseNumber, Courses.CourseDescription FROM Courses, StudentToCourse, Students WHERE Courses.Id = StudentToCourse.Courseid AND Session["id"] = StudentToCourse.Studentid";


只是想知道这是否在正确的轨道上?我不断收到以下编译错误:编译器错误消息:CS1002:;预计

【问题讨论】:

【参考方案1】:

你能试试这个吗:

    comm.CommandText = "SELECT Courses.Id, Courses.CourseSubject, Courses.CourseName, Courses.CourseNumber, Courses.CourseDescription
FROM Courses, StudentToCourse, Students WHERE Courses.Id = StudentToCourse.Courseid AND StudentToCourse.Studentid = " + Session["id"];

但它有漏洞。您应该添加如下参数:

comm.CommandText = "... StudentToCourse.Studentid=@studentID";
comm.Parameters.AddWithValue("@studentID", Session["id"]);

这样更好/更安全。

【讨论】:

以上是关于在 ASP/C# 网页中从 MS Access 数据库中查询连接表的主要内容,如果未能解决你的问题,请参考以下文章

在 MS Access 中从 .mdf 文件创建数据库

在 ms Access 数据宏中从另一个表中获取数据

在 ms Access 中从每个组中选择至少 3 行时出错 - 仅选择了至少 2 行

在 MS Access SQL 查询中从普通日期转换为 unix 纪元日期

如何防止最终用户在 MS Access 2010 应用程序中从前端查看后端数据?

如何在MS ACCESS中从另一个查询中传递PARAMETERS到查询中(不用VBA)?