executebatch()只插入很少的记录

4ioopgfo  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(231)

我在jdbc中遇到了一个批处理问题,我向批处理中添加了一个准备好的语句,但是当我执行批处理时,只插入了很少的记录,我搜索了一下,但没有找到它,下面是代码:我进入了另一个准备好的语句的结果集中,这是一个问题吗?谢谢您!

//autocommitFALSE (...)
 while(rs.next()){ 

            int idrobot = rs.getInt("idRobot");  
            if (idrobot != idrn) {
                  String fullstatenew2 = "INSERT INTO `fullstate`(`idR`, `idC`, `s1`, `s2`, `s3`, `s4`, `s5`, `s6`, `s7`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
                  java.sql.PreparedStatement preparedStmt9 = conn.prepareStatement(fullstatenew2);

                    preparedStmt9.setInt(1, robot);
                    preparedStmt9.setString(2, cluster);
                    preparedStmt9.setInt(3, s1);
                    preparedStmt9.setInt(4, s2);
                    preparedStmt9.setInt(5, s3);
                    preparedStmt9.setInt(6, s4);
                    preparedStmt9.setInt(7, s5);
                    preparedStmt9.setInt(8, s6);
                    preparedStmt9.setInt(9, s7);

                    preparedStmt9.addBatch();

                    if(i>10000) //it's really not like this, but this is the sense {
                        preparedStmt9.executeBatch();
                        System.out.println("insert");
                    }
                    conn.commit();
rseugnpd

rseugnpd1#

add批处理应该在循环中,execute批处理应该在循环之后。

相关问题