1
對於我的大部分查詢,我使用query()
方法JdbcTemplate
和RowMapper
,它將在內部完成所有聲明和連接。我是否必須關閉JdbcTemplate連接並手動創建語句?
但是在特定情況下,我需要ResultSet
的一些額外的元數據,我只想自己處理Statement
和ResultSet
。
之後我是否必須關閉Statement
或Connection
,以便它將返回到連接池,或者由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?
如果您自己搞亂了連接,那麼您必須關閉它。或者更好地使用「ConnectionCallback」或其他回撥接口之一。爲什麼你需要手動獲取連接?使用'JdbcTemplate'時我還沒有發現需要(或敦促)這樣做。 –
爲了方便地生成一些報告,我只想將整個查詢結果轉儲到一個對象中,該對象由一個包含列名的頭數組和一個值爲行/列的二維數組組成。我想爲不同的語句使用相同的方法,所以我必須從ResultSet中獲取標題名稱。 –
這正是'ResultSetExtractor'的意義所在。 –