在一段代码中,一个数据库连接只用了一次,每次运行这段代码都产生一个新的数据库连接资源。那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垃圾回收机制能回收这些不用的连接资源吗?
解决方案 »
- IllegalMonitorStateException 这个到底是怎么来的?
- Java解析excel 各位大侠给点意见
- java 与 Access
- 关于aix系统下XML的问题,急!
- 求救:如何从一个窗口打开另一个窗口?窗口之间如何传递参数?
- 为什么会显示很多小球?
- 谁能帮帮我?送上50分!!!
- java程序
- 路人甲高手们请进:用JAVA采用什么样的算法来自动画出一个中、大型公司分布式网络环境的拓扑图???
- (菜鸟求教:)用过JRun studio3和JBuilder的大虾看过来!!!!
- 怎么把二进制流插入oracle的clob字段
- 请问下谁有Thinking in Java 第四版 《并发》那一章的习题答案源码?
不知道java怎么办//
ps:
PreparedStatement不关,有导致游标耗尽的风险