2017-02-16 35 views
1

对于我的大部分查询,我使用query()方法JdbcTemplateRowMapper,它将在内部完成所有声明和连接。我是否必须关闭JdbcTemplate连接并手动创建语句?

但是在特定情况下,我需要ResultSet的一些额外的元数据,我只想自己处理StatementResultSet

之后我是否必须关闭StatementConnection,以便它将返回到连接池,或者由Spring完成,即使我不使用JdbcTemplate方法?

Connection conn = getJdbcTemplate().getDataSource().getConnection(); 
    PreparedStatement ps = conn.prepareStatement(sql); 
    ResultSet rs = ps.executeQuery(); 

    /* ... */ 

    ps.close(); // should I do this? 
    conn.close(); // and this? 
+0

如果您自己搞乱了连接,那么您必须关闭它。或者更好地使用“ConnectionCallback”或其他回拨接口之一。为什么你需要手动获取连接?使用'JdbcTemplate'时我还没有发现需要(或敦促)这样做。 –

+0

为了方便地生成一些报告,我只想将整个查询结果转储到一个对象中,该对象由一个包含列名的头数组和一个值为行/列的二维数组组成。我想为不同的语句使用相同的方法,所以我必须从ResultSet中获取标题名称。 –

+0

这正是'ResultSetExtractor'的意义所在。 –

回答

1

我想你必须自己关闭它。 Look here,模板执行时使用模板执行它

+0

我想我会使用'DataSourceUtils.releaseConnection()'方法:) –

相关问题