不允许的操作: operation cannot be mixed with Oracle-style batching

发生的问题为:
有一批update语句,数量在10W+,选择使用PreparedStatement 和 addbatch()进行批处理操作。之前试过使用statement操作,但是效率不是很理想。当使用PreparedStatement 的addbatch操作时,控制台报错,错误为:
java.sql.SQLException: 不允许的操作: operation cannot be mixed with Oracle-style batching

PreparedStatement stmts = con.prepareStatement(sql);
            ResultSet rs = stmts.executeQuery();
            stmt = con.prepareStatement("update "+table+" set OrOrigiNalYear = ? ,OrigiNalCValiDate = ?"
                    + " ,OrigiNalSign = ?, OrigiNalEndDate = ?,"
                    + " OrigiNalContNo = ? where recontcode = ? and contno = ?"
                    + " and riskcode = ? and grpcontno = ? and polno = ? and payno = ? "
                    + " and getdatadate = ?");
            int i = 1;
            System.out.println("开始"+PubFun.getCurrentTime());
            while(rs.next()) {
                String sqls = "";
                stmt.setString(1, rs.getString(6));
                stmt.setDate(2, rs.getDate(3));
                stmt.setDate(3, rs.getDate(4));
                stmt.setDate(4, rs.getDate(5));
                stmt.setString(5, rs.getString(2));
                stmt.setString(6, rs.getString(7));
                stmt.setString(7, rs.getString(1));
                stmt.setString(8, rs.getString(8));
                stmt.setString(9, rs.getString(9));
                stmt.setString(10, rs.getString(10));
                stmt.setString(11, rs.getString(11));
                stmt.setDate(12, rs.getDate(12));
                stmt.addBatch();//此处执行即报错

错误为
java.sql.SQLException: 不允许的操作: operation cannot be mixed with Oracle-style batching
at oracle.jdbc.driver.OraclePreparedStatement.setJdbcBatchStyle(OraclePreparedStatement.java:9693)
at oracle.jdbc.driver.OraclePreparedStatement.addBatch(OraclePreparedStatement.java:9774)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.addBatch(OraclePreparedStatementWrapper.java:1358)
at com.sinosoft.lis.reinsure.ReUpdateRein_2.deal(ReUpdateRein_2.java:128)
at com.sinosoft.lis.reinsure.ReUpdateRein_2.run(ReUpdateRein_2.java:43)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)

求解释一下,为何会报错,如何修改

先用字符串变量拼接SQL语句,再放到stmt里面执行。