关闭结果集rs和statement以后,是否还要关闭数据库连接呢?

来源:8-3 DBHelper类设计

小羊爱主

2015-07-11 11:47

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里面还要重新建立连接的。每次执行方法之后,要不要关闭呢?

写回答 关注

1回答

  • xamilanlover
    2015-07-13 10:13:09
    已采纳

    如果是单例模式就不能释放数据库的链接对象,如果不是单例模式可以释放。

    小羊爱主

    非常感谢!

    2015-07-13 13:56:19

    共 1 条回复 >

JAVA遇见HTML——JSP篇

Java Web入门级教程JSP,带你轻松的学习JSP基础知识

248277 学习 · 3071 问题

查看课程

相似问题