在一段代码中,一个数据库连接只用了一次,每次运行这段代码都产生一个新的数据库连接资源。那java的垃圾回收机制能释放前面几次不用的数据库连接资源吗?比如以下代码:public class BookDao {
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
String sql=null;
String TableName="BookInfo";
String Type=null;
int BookID;
public BookDao(String Type){
this.Type=Type;
sql="select * from "+TableName+" Where Type=?";
Connection con=Tool.getConnection();//Tool是个工具类,用来获得数据库的连接。
try
{
ps = con.prepareStatement(sql);
ps.setString(1,Type );
rs=ps.executeQuery();
}
catch (SQLException e) {
e.printStackTrace();
}
}
public List<Book> getBooks(){
List<Book> Booklist=new ArrayList<Book>();
try
{
while(rs.next())
{
Book book=new Book();
book.setBookName(rs.getString(1));
book.setPublisher(rs.getString(2));
book.setType(rs.getString(3));
book.setAuthor(rs.getString(4));
book.setZhaiYao(rs.getString(5));
book.setPrice(rs.getString(6));
book.setHYPrice(rs.getString(7));
book.setBookImg(rs.getString(8));
book.setBookID(rs.getInt(8));
Booklist.add(book);
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return Booklist;
}
}像这段代码,我没有显示的关闭数据库连接,而且每次调用getBooks方法时都要先创建一个BookDao对象,也就创建了一个新的数据库连接。那前面几次的连接java垃圾回收机制能回收这些不用的连接资源吗?
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
String sql=null;
String TableName="BookInfo";
String Type=null;
int BookID;
public BookDao(String Type){
this.Type=Type;
sql="select * from "+TableName+" Where Type=?";
Connection con=Tool.getConnection();//Tool是个工具类,用来获得数据库的连接。
try
{
ps = con.prepareStatement(sql);
ps.setString(1,Type );
rs=ps.executeQuery();
}
catch (SQLException e) {
e.printStackTrace();
}
}
public List<Book> getBooks(){
List<Book> Booklist=new ArrayList<Book>();
try
{
while(rs.next())
{
Book book=new Book();
book.setBookName(rs.getString(1));
book.setPublisher(rs.getString(2));
book.setType(rs.getString(3));
book.setAuthor(rs.getString(4));
book.setZhaiYao(rs.getString(5));
book.setPrice(rs.getString(6));
book.setHYPrice(rs.getString(7));
book.setBookImg(rs.getString(8));
book.setBookID(rs.getInt(8));
Booklist.add(book);
}
}
catch (SQLException e)
{
e.printStackTrace();
}
return Booklist;
}
}像这段代码,我没有显示的关闭数据库连接,而且每次调用getBooks方法时都要先创建一个BookDao对象,也就创建了一个新的数据库连接。那前面几次的连接java垃圾回收机制能回收这些不用的连接资源吗?
不知道java怎么办//
ps:
PreparedStatement不关,有导致游标耗尽的风险