基础问题,很简单~100分

liudang77 2006-03-16 01:16:43
我在一个方法中生成了一个statement但我没有关闭,这样可以吗?
是否因为是一个局部变量而自动的被关闭?
代码如下:

public static synchronized ResultSet getSearch(Connection conn,String sql){
ResultSet rs=null;
try{
Statement stmt=conn.createStatement();
ResultSet rstemp=stmt.executeQuery(sql);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
return rs;

}
...全文
92 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyg719 2006-03-16
  • 打赏
  • 举报
回复
造成的后果是取决于statement具体的设计.

一般由于数据库连接占用一些客户端和服务器端的资源,没有关闭就会造成资源不能被释放,
是一个局部变量也只能保证客户端内存资源被释放,但服务器端的内存资源呢?客户端和服务器
端的tcpip端口呢?所有这些资源均取决于statement的关闭,所以能关闭的时候,尽量关闭。
taolei 2006-03-16
  • 打赏
  • 举报
回复
这样写不可以,java里局部变量所引用的对象不会立即被释放。但也不能立即close Statement,否则ResultSet将不可用。要在ResultSet使用完毕后按Statment,ResultSet的顺序调用close.
liudang77 2006-03-16
  • 打赏
  • 举报
回复
代码修正一下: public static synchronized ResultSet getSearch(Connection conn,String sql){
ResultSet rs=null;
try{
Statement stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
return rs;

}

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧