MST

星途 面试题库

面试题:Java中如何使用JDBC进行简单的批量插入操作

假设你有一个包含学生信息(学号、姓名、年龄)的Java对象列表,使用JDBC,如何将这些学生信息批量插入到数据库的students表中?请给出关键代码片段,需处理异常并合理关闭资源。
49.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

class Student {
    private int id;
    private String name;
    private int age;

    public Student(int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

public class BatchInsertExample {
    public static void main(String[] args) {
        List<Student> studentList = List.of(
                new Student(1, "Alice", 20),
                new Student(2, "Bob", 21)
        );

        String url = "jdbc:mysql://localhost:3306/yourdatabase";
        String username = "yourusername";
        String password = "yourpassword";
        String insertQuery = "INSERT INTO students (id, name, age) VALUES (?,?,?)";

        try (Connection connection = DriverManager.getConnection(url, username, password);
             PreparedStatement preparedStatement = connection.prepareStatement(insertQuery)) {

            for (Student student : studentList) {
                preparedStatement.setInt(1, student.getId());
                preparedStatement.setString(2, student.getName());
                preparedStatement.setInt(3, student.getAge());
                preparedStatement.addBatch();
            }

            preparedStatement.executeBatch();
            System.out.println("Batch insertion successful.");

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
  1. 数据库连接:使用DriverManager.getConnection(url, username, password)获取数据库连接。
  2. 预编译语句:使用connection.prepareStatement(insertQuery)创建预编译语句,用于批量插入数据。
  3. 添加批处理:通过循环遍历学生对象列表,为预编译语句设置参数,并使用preparedStatement.addBatch()将参数添加到批处理中。
  4. 执行批处理:调用preparedStatement.executeBatch()执行批处理操作,将数据批量插入数据库。
  5. 异常处理与资源关闭:使用try-with-resources语句确保在操作完成后自动关闭数据库连接和预编译语句,同时捕获SQLException并进行相应处理。