我有下面的代码,我想关闭preparedstatement对象,因为它是作为一个来自sonar的bug引发的。
public myfunction() throws SQLException {
PreparedStatementCreator preparedStatementCreator = new PreparedStatementCreator() {
String query = "";//let us assume a query
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement preparedStatement= connection.prepareStatement(query);
preparedStatement.setString();
preparedStatement.setString();
}
};
int rows;
try
{
rowNumbers = jdbcTemplate.update(preparedStatementCreator);
}
catch(....)
{
}
catch(....)
{
}
catch(....)
{
}
}
如何关闭preparedstatement对象?我看到的大多数示例大多使用try/finally或try with resources,然后创建对象并使用它try and close in finally。但是,在这里,对象是在单独的函数中创建的,从那里返回,然后使用它。所以创造和使用发生在两个不同的地方。所以我想知道这两种方法
java 8之前
使用Java8尝试使用资源
1条答案
按热度按时间8iwquhpp1#
在本例中,您不需要像spring那样关闭语句
JdbcTemplate
我会帮你的。换句话说,这是声纳的假阳性。如
PreparedStatementCreator.createPreparedStatement(Connection con)
(我的重点):在此连接中创建语句。允许实现使用preparedstatements。jdbctemplate将关闭创建的语句。