我在批处理中使用jdbc preparedStatement并尝试获取由此创建的生成密钥时出现问题.

代码 :

PreparedStatement stmt = null;

...

connection.setAutoCommit(false);

stmt = connection.prepareStatement(insertSuspiciousElement,new String[] {"external_id","element_id"});

final int elementBatchSize = 5000;

int elementCount =0;

for(BlSuspiciousElement element : elements){

externalIds.add(element.getExternalId());

stmt.setInt(1, element.getBlElementType().getElementTypeId());

stmt.setString(2, element.getFirstname());

stmt.addBatch();

elementCount++;

if(elementCount % elementBatchSize == 0){

System.out.println("Running query with batch size for suspiciousElement");

stmt.executeBatch();

ResultSet keys = stmt.getGeneratedKeys();

while(keys.next()){

externalIdElementIdMapping.put(keys.getInt("external_id"),keys.getInt("element_id"));

}

keys.close();

stmt.clearBatch();

stmt.clearParameters();

stmt.clearWarnings();

System.out.println("Done query with batch size for suspiciousElement");

}

}

它在第一个stmt.executeBatch()方法失败.

错误 :

[30/01/12 15:54:41:684 CET] 00000029 RemoteExcepti E CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "processFullFeedForPepAndRelationUpdateOnly" on bean "BeanId(CoRelateEar#AmlKycToolBO.jar#FactivaDBUpdater, null)". Exception data: java.lang.ArrayIndexOutOfBoundsException

at oracle.jdbc.driver.T4CNumberAccessor.unmarshalOneRow(T4CNumberAccessor.java:201)

at oracle.jdbc.driver.T4C8Oall.readRXD(T4C8Oall.java:696)

at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:340)

at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)

at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)

at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)

at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1044)

at oracle.jdbc.driver.OraclePreparedStatement.executeForRowsWithTimeout(OraclePreparedStatement.java:10143)

at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:10249)

at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:230)

at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.executeBatch(WSJdbcStatement.java:748)

对我来说不是很明显……

它似乎不适用于批量更新?仅用于声明或准备好的声明.在这种情况下,我想我最好尝试进行我的批量插入,然后运行另一个查询来查找每个创建的元素生成的键…

谢谢你的帮助,

F

java jdbc 批量更新_java – JDBC PreparedStatement,批量更新和生成的密钥相关推荐

  1. java操作oracle数据_Java jdbc操作oracle数据库的两种方式

    本文由广州疯狂软件java培训分享: 第一种应该是比较古老的方法了. Windows下采用JDBC-ODBC Bridge连接oracle数据库 1. 安装oracle客户端程序,在tnsnames. ...

  2. java运行 mavenzip包_JAVA开发必知工具-Maven-Maven生成可以直接运行的jar包的多种方式...

    大家都知道一个java应用项目可以打包成一个jar,当然你必须指定一个拥有main函数的main class作为你这个jar包的程序入口. 具体的方法是修改jar包内目录META-INF下的MANIF ...

  3. java mongodb批量更新_java中mongoTemplate批量更新

    方法:mongoTemplate.getDb().getCollection(tableName).bulkWrite(requests); public BulkWriteResult bulkWr ...

  4. java中的JDBC用户管理系统_Java+JDBC学生信息管理系统

    base包下: package base; import java.sql.ResultSet; import java.sql.SQLException; import dao.AdminDAO; ...

  5. java mysql数据库编程_java JDBC数据库(mysql)编程

    什么是JDBC • JDBC(Java Data Base Connectivity,Java数据库连接) • 是一种用于执行SQL语句的Java API,为多种关系数据库提供统一访问 • 它由一组用 ...

  6. java mysql结果集_Java JDBC结果集的处理

    结果集指针的移动 while(resultSet.next()){//...... } 指针最初指向第一条记录之前,next()是指向下一个位置,返回的是boolean值,true表示有内容(记录), ...

  7. java 注册驱动失败_java – JDBC驱动程序注册死锁?

    在一个线程中,正在创建一个JackRabbit: "docs-on-startup" #32 prio=5 os_prio=0 tid=0x00007f730d73e800 nid ...

  8. java hive建表_java jdbc 操作 hive 建表 load 数据

    // 需要引入 hadoop & hive jar import java.sql.Connection; import java.sql.DriverManager; import java ...

  9. java 批量存储_java I/O 批量插入保存文件

    [java]代码库package cq.price; import java.io.File; import java.util.ArrayList; import java.util.List; i ...

最新文章

  1. 基于JWT(Json Web Token)的ASP.NET Web API授权方式
  2. exec sp_prepare @P1 output
  3. oracle 修改聚簇因子,Oracle 基础篇 --- 聚簇因子(clustering_factor)
  4. 【ElasticSearch】使用Docker安装ElasticSearch、基本增删改查使用
  5. 解决scrollViewDidScroll do not work的方法
  6. java语言中的浮点型数据分为,Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为float型和double型,其中dou...
  7. 泄漏:Oracle WebLogic Server 12g
  8. 阿里如何做到百万量级硬件故障自愈?
  9. %02 java_02_Java语法
  10. 整理了4个B端产品调研网站,不花一分钱获得最全面的产品体验
  11. [翻译] JTBorderDotAnimation
  12. 不用IIS跑.net web应用
  13. 触摸屏一体机的类型有哪些
  14. 工作中遇到大小端数据存储格式
  15. Halcon 3D create_pose
  16. python-shixian考拉兹猜想
  17. C语言————鸡兔共有30只,脚共有90只,下面的程序段是计算鸡和兔共有多少只?
  18. HTTP学习笔记(适合初学)2
  19. navicat mysql 百度云_转载:用navicat连接百度云服务器上的mysql数据库
  20. 【十进制 转 二进制】【二进制 转 十进制】10进制 VS 2进制【清华大学考研机试题】

热门文章

  1. Jenkins2.249-自定义插件安装(十一)
  2. R语言使用glmnet包拟合lasso-cox回归模型(生存时间和结果标签)、lasso-cox模型进行特征筛选、plot函数可视化cv.glmnet模型获得的最佳lambda曲线位置及其1个标准差线
  3. 如何解释“运维到底是干啥的”?
  4. BigCommerce vs WooCommerce,哪个更适合跨境电商开展业务?
  5. Step7中有关时间和定时器的使用和例程2
  6. 高通baseband多媒体简介
  7. py使用polar绘制霍兰德职业测试雷达图
  8. java使用jol打印对象信息
  9. java hasnext_Java扫描仪的hasNext()方法与示例
  10. 机器学习模型可解释性进行到底 —— SHAP值理论(一)