慕桂英3389331
2021-09-26 18:09:19
我正在使用 Java 和 jdbc 驅(qū)動程序來建立與 DB2 數(shù)據(jù)庫的連接。我正在嘗試使用單個語句將多行插入到表中??偠灾?,我有一個循環(huán),它遍歷 List 中的對象并延長 insert 語句,直到它包含 ArrayList 中的所有行。然后在循環(huán)完成時清理字符串的末尾,并嘗試執(zhí)行該語句。以下是執(zhí)行方法時查詢語句的外觀示例: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í)行并拋出以下錯誤:[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條經(jīng)驗 獲得超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
提交
取消