關閉結果集rs和statement以后,是否還要關閉數據庫連接呢?
public?class?ItemsDAO?{ /*獲得所有商品*/ public?ArrayList<Items>?getAllItems(){ Connection?conn=null; PreparedStatement?stmt=null; String?sql="select?*?from?shop"; ResultSet?rs=null; ArrayList<Items>?list=new?ArrayList<Items>(); try { conn=DBHelper.getConnection(); stmt=conn.prepareStatement(sql); rs=stmt.executeQuery(); while(rs.next()) { Items?item=new?Items(); item.setId(rs.getInt("id")); item.setName(rs.getString("name")); item.setCity(rs.getString("city")); item.setNumber(rs.getInt("number")); item.setPicture(rs.getString("picture")); item.setPrice(rs.getInt("price")); list.add(item); } return?list; }catch(Exception?ex) { ex.printStackTrace(); return?null; }finally { /*釋放結果集*/ if(rs!=null) { try { rs.close(); } catch(Exception?ex) { ex.printStackTrace(); } } /*釋放statement*/ if(stmt!=null) { try { stmt.close(); } catch(Exception?ex) { ex.printStackTrace(); } } /*是需要釋放數據庫連接呢?老師講解時,沒有提到這一點*/ if(conn!=null) { try { conn.close(); } catch(Exception?ex) { ex.printStackTrace(); } } } }
后面的兩個方法getItemsById和getItemsByList里面還要重新建立連接的。每次執行方法之后,要不要關閉呢?
2015-07-13
如果是單例模式就不能釋放數據庫的鏈接對象,如果不是單例模式可以釋放。