我需要连接数据库请你帮我增加代码
时间: 2024-03-25 21:35:41 浏览: 11
好的,如果你需要将学生成绩保存到数据库中,可以使用Java中的JDBC API来连接数据库。以下是一个示例代码,可以将学生信息保存到MySQL数据库中:
```java
import java.sql.*;
public class StudentGradeManagementSystem {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1. 连接数据库
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
conn = DriverManager.getConnection(url, user, password);
// 2. 创建表
stmt = conn.createStatement();
String sql = "CREATE TABLE IF NOT EXISTS student (id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, score INT NOT NULL, PRIMARY KEY (id))";
stmt.executeUpdate(sql);
// 3. 插入数据
Scanner scanner = new Scanner(System.in);
System.out.print("请输入学生人数:");
int num = scanner.nextInt();
for (int i = 0; i < num; i++) {
System.out.print("请输入第" + (i + 1) + "个学生的姓名:");
String name = scanner.next();
System.out.print("请输入第" + (i + 1) + "个学生的成绩:");
int score = scanner.nextInt();
sql = "INSERT INTO student (name, score) VALUES ('" + name + "', " + score + ")";
stmt.executeUpdate(sql);
}
// 4. 查询数据
sql = "SELECT * FROM student";
rs = stmt.executeQuery(sql);
System.out.println("学生姓名\t成绩");
while (rs.next()) {
String name = rs.getString("name");
int score = rs.getInt("score");
System.out.println(name + "\t" + score);
}
// 5. 计算平均成绩和最高分学生
sql = "SELECT AVG(score) AS avg_score, MAX(score) AS max_score, name FROM student GROUP BY name";
rs = stmt.executeQuery(sql);
double sum = 0;
int maxScore = 0;
String maxName = "";
while (rs.next()) {
double avgScore = rs.getDouble("avg_score");
if (!rs.wasNull()) {
sum += avgScore;
}
int score = rs.getInt("max_score");
if (score > maxScore) {
maxScore = score;
maxName = rs.getString("name");
}
}
double average = sum / num;
System.out.println("平均成绩为:" + average);
System.out.println("最高分学生是:" + maxName + ",成绩为:" + maxScore);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 6. 关闭连接
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
```
注意,这只是一个简单的示例,实际的数据库连接和操作可能需要更多的异常处理和安全措施。同时,建议使用连接池等技术来提高数据库连接的效率和性能。