最近在使用批处理处理大数据量文件,想使用PreparedStatement进行预编译然后一次性操作。但是在执行过程中,addbatch步骤报错,不允许的操作。代码省略Connection创建步骤,自动提交已关闭
PreparedStatement prts = con.prepareStatement(sql);
ResultSet rs = prts.executeQuery();
String sqls = "update LRMONTHSURPLUSPROFIT set backup3 = ? ,backup4 = ? where recontcode = ? ";
PreparedStatement sprt = con.prepareStatement(sqls);
while(rs.next()){
sprt.setInt(1, 1);
sprt.setInt(2, 4);
sprt.setString(3, rs.getString(1));
sprt.addBatch();//此处报错
}
int[] a = sprt.executeBatch();
System.out.println("执行成功:"+ a +"条");
rs.close();
prts.close();
sprt.close();
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 test.TestRein.deal(TestRein.java:64)
at test.TestRein.run(TestRein.java:31)
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)
不是字段类型,长度的问题,使用的Oracle数据库。
求帮忙解决此问题