我试图执行这段代码,但我有这个错误,我知道我必须关闭连接
preparedStatement.close() 但是它在处理完成之前就关闭了,它给出了下面的错误
Caused by: java.sql.SQLException: No operations allowed after statement closed.我的代码
private void fakesAssociate(List<Map<String, Object>> Employees) {
coreEmployees.forEach(row -> {
try {
myrefJdbcTemplate.update("INSERT INTO `n_associate` (`active`, `first_name`, `birthday`) VALUES ( ?, ?, ? );", preparedStatement -> {
preparedStatement.setBoolean(1, true);
preparedStatement.setString(2, String.valueOf(row.get("usual_first_name")));
Date birthdate = ((Date) row.get("birth_date"));
if (birthdate != null) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(birthdate);
calendar.set(Calendar.YEAR, 1970);
preparedStatement.setDate(3, new Date(calendar.getTime().getTime()));
} else {
preparedStatement.setDate(3, null);
}
preparedStatement.close();
});
});
} catch (DataIntegrityViolationException e) {
String queryAssociate = "UPDATE n_associate SET `active`= ? " +
WHERE n_associate.first_name = ?;";
myrefJdbcTemplate.update(queryAssociate, preparedStatement -> {
preparedStatement.setBoolean(1, false);
preparedStatement.close();
});
}
});
}请帮助找出如何解决它。
发布于 2020-04-09 19:03:43
不要关闭该语句。JdbcTemplate需要打开它才能执行它。当使用完语句时,JdbcTemplate将负责关闭该语句。
https://stackoverflow.com/questions/61119507
复制相似问题