这里不太懂老师的写法

这里不太懂老师的写法

package jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;

public class TestJDBC2 {
    public static void main(String[] args) throws Exception{
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        connection = JdbcUtils.getConnection();
        JdbcUtils.begin(connection);

        String sql = "insert into t_user(username,password) values(?,?)";
        preparedStatement = connection.prepareStatement(sql);
        for(int i=0;i<10000;i++){
            preparedStatement.setString(1,"One"+(i+1));
            preparedStatement.setString(2,"two"+(i+1));
            preparedStatement.addBatch();

            if((i+1)%500==0){
                preparedStatement.executeBatch();
                preparedStatement.clearBatch();
            }
        }

        // 如果不是500的数
        if(10000%500!=0){
            preparedStatement.executeBatch();
            preparedStatement.clearBatch();
        }
    }
}

不是500的倍数,不应该是写在for循环里面吗,这里不太懂老师的写法

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,批量插入的意思就是一批数据同时插入。也就是从第1条开始,到第500条数据,这500条数据同时添加到数据库称之为批量插入。而不是只有第500的倍数的数据才能插入。

祝:学习愉快~

  • JavaNice 提问者 #1
    比如要插入19条数据,5条为一批。从16—19这四条是通过,这条语句执行的是吧 if(20%5!=0){ preparedStatement.executeBatch(); preparedStatement.clearBatch(); }
    2019-08-06 23:11:40
  • 好帮手慕阿满 回复 提问者 JavaNice #2
    是的,同学理解的不错。祝:学习愉快~
    2019-08-07 09:39:27
好帮手慕阿满 2019-08-06 14:51:20

同学你好,不是500的倍数,是写在循环外的。这里是以500条记录为一个批次,进行批量插入操作。但是如果循环最后的条数不满500,不再循环,也就无法插入数据。所以在循环有一个判断,判断循环的次数是否是500的倍数,如果不是,在循环外将剩下不满500的记录也插入数据库。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 JavaNice #1
    还是不太懂,循环里面写入的数据应该是500的倍数,也就是说第500条数据,第1000条.....这些数据才能插入吧
    2019-08-06 15:15:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师