2017-02-16 91 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()'方法:) –

相關問題