为了账号安全,请及时绑定邮箱和手机立即绑定

如何在一条语句中将多行插入到 DB2 中?

如何在一条语句中将多行插入到 DB2 中?

慕桂英3389331 2021-09-26 18:09:19
我正在使用 Java 和 jdbc 驱动程序来建立与 DB2 数据库的连接。我正在尝试使用单个语句将多行插入到表中。总而言之,我有一个循环,它遍历 List 中的对象并延长 insert 语句,直到它包含 ArrayList 中的所有行。然后在循环完成时清理字符串的末尾,并尝试执行该语句。以下是执行方法时查询语句的外观示例:INSERT INTO GROUPS (GROUP_NAME, ENTRY_NAME, ENTRY_TYPE, LAST_REQ, CREATE_BY, REQ_BY, LAST_CHANGED, LAST_REQ_TIME) VALUES ('JOHN', 'TEST1', 'FILE', 'N/A', 'SSDP071', 'N/A', '2018-09-17 19:36:34.004', '2018-09-17 19:36:34.004'),('JOHN', 'TEST2', 'FILE', 'N/A', 'SSDP071', 'N/A', '2018-09-17 19:36:37.771', '2018-09-17 19:36:37.771'),('JOHN', 'TEST3', 'FILE', 'N/A', 'SSDP071', 'N/A', '2018-09-17 19:36:42.021', '2018-09-17 19:36:42.021')我的代码尝试执行并抛出以下错误:[9/17/18 19:36:42:834 GMT] 00000557 SystemOut O com.ibm.db2.jcc.am.SqlSyntaxErrorException:[jcc][50053][12311][4.22.37] T2zOS 异常:[jcc] [T2zos]T2zosPreparedStatement.readPrepareDescribeOutput_:nativePrepareInto:1583: DB2 引擎 SQL 错误,SQLCODE = -104,SQLSTATE = 42601,错误标记 = ,;FOR NOT ATOMIC ERRORCODE=-104,SQLSTATE=42601我的错误标记是一个逗号,我不确定它指的是哪个。有没有办法将多行插入到 DB2 表中?帮助将不胜感激!
查看完整描述

2 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

您可以改用批处理语句:


String values = "INSERT INTO GROUPS " +

"(GROUP_NAME,ENTRY_NAME,ENTRY_TYPE,LAST_REQ,CREATE_BY,REQ_BY,LAST_CHANGED,LAST_REQ_TIME) " +

"VALUES (?,?,?,?,?,?,?,?)";


// ... 


statement = conn.prepareStatement(values);


// ... 


while(i < addedResources.size()){

   statement.setString(addedResources.get(i)).getGROUP_NAME().trim());

   statement.setString(addedResources.get(i)).getENTRY_NAME().trim());


   // ...  


   statement.addBatch();

}

statement.executeBatch();


查看完整回答
反对 回复 2021-09-26
  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信