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

我正在使用 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 表中?帮助将不胜感激!


慕桂英3389331
浏览 185回答 2
2回答

尚方宝剑之说

您可以改用批处理语句:String values = "INSERT INTO GROUPS " +"(GROUP_NAME,ENTRY_NAME,ENTRY_TYPE,LAST_REQ,CREATE_BY,REQ_BY,LAST_CHANGED,LAST_REQ_TIME) " +"VALUES (?,?,?,?,?,?,?,?)";// ...&nbsp;statement = conn.prepareStatement(values);// ...&nbsp;while(i < addedResources.size()){&nbsp; &nbsp;statement.setString(addedResources.get(i)).getGROUP_NAME().trim());&nbsp; &nbsp;statement.setString(addedResources.get(i)).getENTRY_NAME().trim());&nbsp; &nbsp;// ...&nbsp;&nbsp;&nbsp; &nbsp;statement.addBatch();}statement.executeBatch();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java