首页 > 解决方案 > 我在 java.sql.BatchUpdateException 中遇到错误:ORA-00917:缺少逗号

问题描述

                            //  Statement stmt=con.createStatement();
 String SQL = "insert into JMX(MAXThreads number(10),currentThreadCount number(10),MaxkeepAliveRequest number(10),threadPriority number(10), maxTime number(10),requestCount number(10),bytesReceived number(10),bytesSent number(10),processingTime number(10),modelerType varchar2(50) ,errorCount number(10)) values (?,?,?,?,?,?,?,?,?,?,?)";
 
 
 
                                try (PreparedStatement pst=con.prepareStatement(SQL)) {
                                    pst.setObject(1,  memoryMbean);
                                    pst.setObject(2,  osMbean);
                                    pst.setObject(3,  tmMbean);
                                    pst.setObject(4,  smMbean);
                                    pst.setObject(5,  grpMbean);
                                    pst.setObject(6,  grpMbean1);
                                    pst.setObject(7,  grpMbean2);
                                    pst.setObject(8,  grpMbean3);
                                    pst.setObject(9,  grpMbean4);
                                    pst.setObject(10,  grpMbean5);
                                    pst.setObject(11,  grpMbean6);
                                    
                                    pst.addBatch();

                                    pst.setObject(1,  memoryMbean);
                                    pst.setObject(2,  osMbean);
                                    pst.setObject(3,  tmMbean);
                                    pst.setObject(4,  smMbean);
                                    pst.setObject(5,  grpMbean);
                                    pst.setObject(6,  grpMbean1);
                                    pst.setObject(7,  grpMbean2);
                                    pst.setObject(8,  grpMbean3);
                                    pst.setObject(9,  grpMbean4);
                                    pst.setObject(10,  grpMbean5);
                                    pst.setObject(11,  grpMbean6);
                                    pst.executeBatch();
                                    con.commit();

                                   // JOptionPane.showMessageDialog(null,"Done");

                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }

这是我得到的输出: START java.sql.BatchUpdateException: ORA-00917: missing comma

在 oracle.jdbc.driver.T4CPreparedStatement.executeLargeBatch(T4CPreparedStatement.java:1447) 在 oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java) 的 oracle.jdbc.driver.OraclePreparedStatement.executeLargeBatch(OraclePreparedStatement.java:9711) 的过程已完成:9487) 在 oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:237) 在 com.jmx.Connection2.waitMethod(Connection2.java:304) 在 com.jmx.Connection2.main(Connection2.java:173)

标签: javajdbcsqlbatch

解决方案


您不需要指定类型,删除列类型:

"insert into JMX(MAXThreads , currentThreadCount , MaxkeepAliveRequest 
, threadPriority , maxTime , requestCount , bytesReceived , bytesSent 
, processingTime , modelerType , errorCount ) values (?,?,?,?,?,?,?,?,?,?,?)";

另外,为什么在 addBatch 之后再次设置值(重复)?


推荐阅读