用java编写一个数据库查询的程序,可以在若干学生中随机抽取20名学生,并计算这20名学生的平均成绩
时间: 2024-03-06 10:51:16 浏览: 83
好的,以下是用 Java 编写一个数据库查询程序,可以在若干学生中随机抽取20名学生并计算这20名学生的平均成绩的示例代码:
```java
import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class Main {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1. 加载数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 创建数据库连接
String url = "jdbc:mysql://localhost:3306/student_db?useSSL=false&serverTimezone=UTC";
String username = "your_username";
String password = "your_password";
conn = DriverManager.getConnection(url, username, password);
// 3. 创建 SQL 语句
String sql = "SELECT * FROM students";
// 4. 执行 SQL 语句并获取结果集
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
// 5. 随机抽取20名学生
List<Integer> idList = new ArrayList<>();
while (rs.next()) {
idList.add(rs.getInt("id"));
}
Collections.shuffle(idList, new Random());
List<Integer> selectedIdList = idList.subList(0, 20);
// 6. 计算这20名学生的平均成绩
int totalScore = 0;
for (int id : selectedIdList) {
sql = "SELECT * FROM students WHERE id = " + id;
rs = stmt.executeQuery(sql);
while (rs.next()) {
totalScore += rs.getInt("score");
}
}
double averageScore = totalScore / 20.0;
// 7. 输出结果
System.out.println("随机抽取的20名学生的平均成绩为:" + averageScore);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 8. 关闭结果集、语句和连接
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
需要注意的是,上述代码中的数据库连接方式是使用 JDBC 连接 MySQL 数据库的示例。如果需要连接其他数据库,需要根据实际情况修改相应的连接方式。另外,代码中的 SQL 语句仅供参考,需要根据实际表结构和数据进行修改。
阅读全文