弱弱的问一个问题,conn,rs,stmt释放资源的问题

e_fresh 2008-08-19 05:00:41
小弟初学JDBC,现在有个问题向各位请教:
大致代码如下;

class A{
public static void main() {
//调用B.query方法
ResultSet rs = new B().query(sql);
rs.close();
}
}

class B{
public ResultSet query(String sql) {
//建立连接conn及stmt
ResultSet rs = stmt.executeQuery(sql)
}
}

按上述情况,调用完类B中query方法后,conn和stmt何时关闭,这样是否会存在数据库连接未关闭的情况,有没有好的解决办法。
...全文
187 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
joejoe1991 2008-08-21
  • 打赏
  • 举报
回复
http://www.ibm.com/developerworks/cn/java/j-zhanghz2/
chenlei65368 2008-08-21
  • 打赏
  • 举报
回复
不过完全可以单独写一个DAO类,可以多次调用
chenlei65368 2008-08-21
  • 打赏
  • 举报
回复
赞成8楼的观点,我也是这么用的
magicxin031 2008-08-21
  • 打赏
  • 举报
回复
你既然把数据库操作放在了一个类里,那么你在这个类里在放个close()方法就可以了。

//类B这样改,应该类B还有个数据库连接函数,不帮你改了,默认你会了。
class B{
private Connection con;
private Statement stmt;
private ResultSet rs;

public ResultSet query(String sql) {
//建立连接conn及stmt
rs = stmt.executeQuery(sql);
}
public synchronized void close() {
try {
if (rs != null) {
rs.close();
rs = null;
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
try {
if (con != null) {
con.close();
con = null;
}
} catch (Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
//类a中的主方法这样改
class A{
public static void main() {
//……先建立连接
//调用B.query方法
B example=new B();
//……sql语句的定义
ResultSet rs = example.query(sql);
example.close();
}
}

milooxu 2008-08-21
  • 打赏
  • 举报
回复
if(conn != null) {
conn.close();
conn = null;
}
huangjn213 2008-08-19
  • 打赏
  • 举报
回复
确实有点问题 同问
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lgg201 的回复:]
调用完之后
if(conn == null)
{conn.close();}
其他两个一样的.不过这个都是放到finally中的.

[/Quote]
if(conn != null) {}
goosman 2008-08-19
  • 打赏
  • 举报
回复
调用完之后
if(conn == null)
{conn.close();}
其他两个一样的.不过这个都是放到finally中的.
liujiaqwer 2008-08-19
  • 打赏
  • 举报
回复
用完一起关
e_fresh 2008-08-19
  • 打赏
  • 举报
回复
如果在类B中关闭则在类A中诸如rs.next()方法就用不了了
  • 打赏
  • 举报
回复
使用完关了不就ok了。

62,614

社区成员

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

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