我从Sonar收到以下问题: SampleDao.java null使用try-with-resources或在“finally”子句中关闭此“PreparedStatement”。
我正在使用Spring JDBC,代码如下:
ResponseObject user = jdbcTemplate.query(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement(MY_QUERY);
ps.setLong(1, parameter);
return ps;
}
}, new MyResultSetExtractor());
我的问题是,我认为我不需要关闭连接,因为我有一个连接池,所以您认为我必须做什么,只是忽略声纳问题?或者还有什么我可以做的吗?。
谢谢
答案 0 :(得分:-3)
这似乎是一个问题,因为您正在创建一个匿名内部类,并且声纳期望在常规方法中创建的prepare语句被关闭。
如果您使用的是Java 8,请尝试使用labmda表达式替换匿名内部类。
ResponseObject user = jdbcTemplate.query(coneection -> {
PreparedStatement ps = con.prepareStatement(MY_QUERY);
ps.setLong(1, parameter);
return ps;
}
}, new MyResultSetExtractor());