使用PrepareStatement实现批量插入操作

本文介绍了如何使用Java的PrepareStatement实现批量插入数据库的操作,包括三种不同的实现方式,并展示了执行结果和数据库状态。

使用PrepareStatement实现批量插入操作

方式一:

在这里插入图片描述
在这里插入图片描述

@Test
    public void testQueryManyRecords(){
   
   
        Connection connection = null;
        PreparedStatement ps = null;
        try {
   
   
            long start = System.currentTimeMillis();
            connection = JDBCUtils.getConnection();
            String sql="insert into goods(name) values(?)";
            ps = connection.prepareStatement(sql);
            for(int i=1;i<=10000;i++){
   
   
                ps.setObject(1,"admin"+i);
                ps.executeUpdate();
            }
            long end=System.currentTimeMillis();
            System
### Java PreparedStatement 批量更新示例 当执行多个相似的数据库操作时,使用 `PreparedStatement` 的批量更新功能可以显著提高性能并减少网络开销。以下是通过 `PreparedStatement` 实现批量更新的具体方法[^4]。 #### 使用 JDBC 进行批量更新 为了实现高效的批量插入或更新操作,可以通过设置自动提交模式为关闭状态来优化事务管理: ```java Connection conn = null; PreparedStatement pstmt = null; try { conn = DriverManager.getConnection(dbURL, dbUser, dbPassword); conn.setAutoCommit(false); // 关闭自动提交 String sql = "INSERT INTO users (name, age) VALUES (?, ?)"; pstmt = conn.prepareStatement(sql); for (int i = 0; i < dataList.size(); i++) { User user = dataList.get(i); pstmt.setString(1, user.getName()); pstmt.setInt(2, user.getAge()); pstmt.addBatch(); if (i % batchSize == 0 || i == dataList.size() - 1) { pstmt.executeBatch(); // 提交批次中的所有命令 conn.commit(); // 提交更改到数据库 } } } catch (SQLException e) { if (conn != null) { try { System.err.print("Transaction is being rolled back"); conn.rollback(); } catch(SQLException excep) { excep.printStackTrace(); } } e.printStackTrace(); } finally { if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } ``` 此代码片段展示了如何利用 `addBatch()` 方法收集多条记录,并在适当的时候调用 `executeBatch()` 来一次性发送这些指令给数据库服务器。此外,在每次达到预定义的数量 (`batchSize`) 或者遍历结束时都会触发一次实际的数据传输过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值