慕桂英3389331
2021-09-26 18:09:19
我正在使用 Java 和 jdbc 驅(qū)動(dòng)程序來(lái)建立與 DB2 數(shù)據(jù)庫(kù)的連接。我正在嘗試使用單個(gè)語(yǔ)句將多行插入到表中。總而言之,我有一個(gè)循環(huán),它遍歷 List 中的對(duì)象并延長(zhǎng) insert 語(yǔ)句,直到它包含 ArrayList 中的所有行。然后在循環(huán)完成時(shí)清理字符串的末尾,并嘗試執(zhí)行該語(yǔ)句。以下是執(zhí)行方法時(shí)查詢語(yǔ)句的外觀示例: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')我的代碼嘗試執(zhí)行并拋出以下錯(cuò)誤:[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 錯(cuò)誤,SQLCODE = -104,SQLSTATE = 42601,錯(cuò)誤標(biāo)記 = ,;FOR NOT ATOMIC ERRORCODE=-104,SQLSTATE=42601我的錯(cuò)誤標(biāo)記是一個(gè)逗號(hào),我不確定它指的是哪個(gè)。有沒(méi)有辦法將多行插入到 DB2 表中?幫助將不勝感激!
2 回答

尚方寶劍之說(shuō)
TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以改用批處理語(yǔ)句:
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();
添加回答
舉報(bào)
0/150
提交
取消