java - 我在 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)
解决方案
您不需要指定类型,删除列类型:
"insert into JMX(MAXThreads , currentThreadCount , MaxkeepAliveRequest
, threadPriority , maxTime , requestCount , bytesReceived , bytesSent
, processingTime , modelerType , errorCount ) values (?,?,?,?,?,?,?,?,?,?,?)";
另外,为什么在 addBatch 之后再次设置值(重复)?
推荐阅读
- sdk - 为什么 Yocto SDK 不能构建 Yocto SDK?
- javascript - Jquery创建没有结束标签的元素
- docker - Dockerfiles 中的多行注释
- palindrome - Java BitSet 示例 - Can Palindrome 算法
- terraform - terraform 状态文件已重新定位,terraform 现在与 openstack 刷新/导入错误时的基础设施没有关联
- php - 使用 laravel 将裁剪后的图像保存在 public/uploads 文件夹中
- http - RestApi:404、422 还是 500?
- php - 使用 php 上传文件 | 文件不再上传
- tableau-api - 如何在 Tableau 中堆叠两个度量,同时将其余度量保留为单列
- asp.net-core - 在 ASP.NET Core 中保护对 .html 文件的请求