准备语句仅更新我们通过循环设置的第一个条目,其余的不会插入到数据库中。
String INSERT_INTO_XYZ="Insert into xyz(col1,col2,col3) values(?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(INSERT_INTO_XYZ);
int i = 10;
for(int employeeId : employeeIds)
{
pstmt.setInt(1, i++);
pstmt.setInt(2, group);
pstmt.setInt(3, employeeId);
pstmt.addBatch();
pstmt.clearParameters();
}
pstmt.executeBatch();
conn.commit();
答案 0 :(得分:0)
executeBatch()应该在for循环之外。
addBatch()用于向批处理添加单个语句。 executeBatch()用于开始执行组合在一起的所有语句。
for(int employeeId : employeeIds) {
pstmt.setInt(1, i++);
pstmt.setInt(2, group);
pstmt.setInt(3, employeeId);
pstmt.addBatch();
pstmt.clearParameters();
}
pstmt.executeBatch();
pstmt.close();
答案 1 :(得分:0)
您的代码看起来是正确的。您不应该要求清除参数,因为组不在循环中更改,您可以在循环外设置它。只有在conn.setAutoCommit为false时才需要提交。我认为是这种情况,但你不要在你的代码中显示。