我正在使用 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();
添加回答
举报
0/150
提交
取消