JDBC 查询学生选课信息:多对多关系示例
使用 JDBC 查询学生选课信息:多对多关系示例
本文将演示如何使用 JDBC 查询数据库中某个学生所选课程信息。这是一个典型的多对多关系示例,涉及学生表、课程表以及学生选课关联表。
数据库表设计
Student 表
- 学生编号 (student_id)
- 学生姓名 (student_name)
Course 表
- 课程编号 (course_id)
- 课程名称 (course_name)
学生选课表 (student_course)
- 学生编号 (student_id)
- 课程编号 (course_id)
JDBC 代码示例
import java.sql.*;
public class Main {
public static void main(String[] args) {
try {
// 连接数据库
Connection connection = DriverManager.getConnection('jdbc:mysql://localhost:3306/database_name', 'username', 'password');
// 查询某一个学生所选择的所有课程信息
String query = 'SELECT Student.student_id, Student.student_name, Course.course_name '
+ 'FROM Student '
+ 'JOIN student_course ON Student.student_id = student_course.student_id '
+ 'JOIN Course ON student_course.course_id = Course.course_id '
+ 'WHERE Student.student_id = ?';
// 设置学生编号
int studentId = 1;
// 创建预编译语句对象
PreparedStatement statement = connection.prepareStatement(query);
statement.setInt(1, studentId);
// 执行查询
ResultSet resultSet = statement.executeQuery();
// 输出查询结果
while (resultSet.next()) {
int studentId = resultSet.getInt('student_id');
String studentName = resultSet.getString('student_name');
String courseName = resultSet.getString('course_name');
System.out.println('学生编号: ' + studentId);
System.out.println('学生姓名: ' + studentName);
System.out.println('课程名称: ' + courseName);
System.out.println();
}
// 关闭连接
resultSet.close();
statement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
注意:
- 替换代码中的
database_name、username和password为实际的数据库名称、用户名和密码。 - 根据实际情况调整查询语句和学生编号。
代码说明
- **连接数据库:**使用
DriverManager.getConnection()方法建立数据库连接。 - **创建预编译语句:**使用
connection.prepareStatement()方法创建PreparedStatement对象,并设置查询语句。 - **设置参数:**使用
statement.setInt()方法设置查询语句中的参数,即学生编号。 - **执行查询:**使用
statement.executeQuery()方法执行查询操作,并获取结果集ResultSet对象。 - **处理结果集:**使用
resultSet.next()方法遍历结果集,并使用resultSet.getInt()和resultSet.getString()方法获取每条记录的数据。 - **关闭连接:**最后,关闭
ResultSet、Statement和Connection对象,释放资源。
通过以上步骤,即可使用 JDBC 查询数据库中某个学生所选课程信息。
原文地址: https://www.cveoy.top/t/topic/qdav 著作权归作者所有。请勿转载和采集!