13、学生籍贯信息记录簿(使用数据库) 编制一个学生籍贯(到省一级就行,不用到市)信息记录簿,每个学生信息包括:学号、姓名、籍贯。功能要求: (1)按学号或姓名查询其籍贯; (2)按籍贯查询并输出该籍贯的所有学生; (3)能添加、删除和修改学生的籍贯信息; (4)籍贯从JComboBox中选择。
时间: 2024-03-12 13:45:34 浏览: 121
为实现以上功能,可以设计以下数据库表结构:
学生表(student):
| 字段名 | 数据类型 | 描述 |
| --- | --- | --- |
| student_id | int | 学号,主键 |
| name | varchar(50) | 姓名 |
| province | varchar(20) | 籍贯省份 |
其中,student_id字段为主键,保证唯一性。
在Java程序中,可以使用JDBC连接数据库,实现以下功能:
1. 按学号或姓名查询其籍贯:
首先,需要从输入框中获取学号或姓名,然后通过SQL语句查询数据库中对应的记录。可以使用PreparedStatement对象,以防止SQL注入攻击。示例代码如下:
```java
String keyword = "张三"; // 从输入框中获取关键字
String sql = "SELECT * FROM student WHERE student_id=? OR name=?";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, Integer.parseInt(keyword)); // 将学号转换为整数类型
pstmt.setString(2, keyword);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
int studentId = rs.getInt("student_id");
String name = rs.getString("name");
String province = rs.getString("province");
// 处理查询结果
}
} catch (SQLException e) {
e.printStackTrace();
}
```
2. 按籍贯查询并输出该籍贯的所有学生:
同样,需要从JComboBox中获取选择的籍贯,然后通过SQL语句查询数据库中对应的记录。示例代码如下:
```java
String province = "广东"; // 从JComboBox中获取选择的籍贯
String sql = "SELECT * FROM student WHERE province=?";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, province);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
int studentId = rs.getInt("student_id");
String name = rs.getString("name");
String province = rs.getString("province");
// 处理查询结果
}
} catch (SQLException e) {
e.printStackTrace();
}
```
3. 添加、删除和修改学生的籍贯信息:
添加学生信息可以使用INSERT语句,示例代码如下:
```java
int studentId = 1001; // 从输入框中获取学生信息
String name = "张三";
String province = "广东";
String sql = "INSERT INTO student (student_id, name, province) VALUES (?, ?, ?)";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, studentId);
pstmt.setString(2, name);
pstmt.setString(3, province);
int rows = pstmt.executeUpdate();
if (rows > 0) {
// 添加成功
} else {
// 添加失败
}
} catch (SQLException e) {
e.printStackTrace();
}
```
删除学生信息可以使用DELETE语句,示例代码如下:
```java
int studentId = 1001; // 从输入框中获取学号
String sql = "DELETE FROM student WHERE student_id=?";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, studentId);
int rows = pstmt.executeUpdate();
if (rows > 0) {
// 删除成功
} else {
// 删除失败
}
} catch (SQLException e) {
e.printStackTrace();
}
```
修改学生信息可以使用UPDATE语句,示例代码如下:
```java
int studentId = 1001; // 从输入框中获取学号
String province = "广西"; // 从输入框中获取新的省份信息
String sql = "UPDATE student SET province=? WHERE student_id=?";
try (Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, province);
pstmt.setInt(2, studentId);
int rows = pstmt.executeUpdate();
if (rows > 0) {
// 修改成功
} else {
// 修改失败
}
} catch (SQLException e) {
e.printStackTrace();
}
```
阅读全文