Connection、ResultSet不用关闭吗? 当然要关闭。这样写程序是不对的,程序在跑一段时间后一定会出问题。b中没有办法获得这个connection,因此这个connection便关不掉了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 A.Class是包装好的取connection和resultSet的方法,当然不能关了,关了外面怎么用,关闭这个的原则的在哪里用,就在哪里关,这里只是取出去给别人用,当然是不关了,应该在用的地方关 当然要关闭,不过只是在A.class再写一个关闭的方法,再返回结果几中不可以掉用这个关闭的方法,但是可以在另一个类中(B.class)定义A类的对象,然后最终用这个A类的对象调用这个关闭资源的方法,否则用一段时间后肯定会出问题 A.java可以改成如下代码:package ex;import java.sql.*;public class A{ Connection conn=null; Statement stmt=null; protected static Connection getConnection() throws Exception { Class.forName(oracle.jdbc.driver.OracleDriver).newInstance(); return DriverManager.getConnection("...", "scott","tiger"); } public ResultSet getResultSet(String tableName) throws Exception { if (tableName == null) throw new Exception(); conn = getConnection(); if (conn == null) throw new Exception(); String sql = "select * from " + tableName; stmt = conn.createStatement(); return stmt.executeQuery(sql); } //关闭连接public void closeConnection(){ try{ if(stmt!=null) { stmt.close(); System.out.println("stmt close"); } if(conn!=null) { conn.close(); System.out.println("conn close"); } }catch(Exception e){ System.out.println("login problem:"+e.getMessage()); } } }然后再B.java中,调用A类的关闭资源方法:A a=new A();a.closeConnection();大致思路是这样的 ResultSet可以不关的,但是Connection一般是要关的,不然的话会占用太多的网络资源。 一定要关,不同的ResultSet实现要求不一样,有的实现不关也没有关系,但有的不关则会资源泄漏,所以最好按java doc要求,用完后调用close关闭,而且最好放在finally 中执行 A.class那样的代码很糟糕要末就用一个类直接操作数据库,每次完成就调用close()释放数据库连接。 关闭statement时,其所产生的resultset对象也关闭 关于J2SE项目的jar打包问题?急求~ 一个小问题,大家来帮忙,谢谢 java并发编程实践中----代码“重排列”问题请教? 关于JButton点击的一个问题!如何用JButton实现这样的效果 虚心求教!关于集合类的问题,请大侠赐教! 我用JAVA的MD5把一个字符串转成MD5码了,可是怎么通过一MD5码算出原来的字符串? 急急 在线等任意输入一个五位数,输出这个字符串的中文读法 请问,如何用<logic:iterator>,输出list的内容 内部类的使用问题 在Applet中怎么样象硬盘写入一个文本文件? 请教一个问题 如何把byte[]中的数转为十六进制?
Connection conn=null;
Statement stmt=null;
protected static Connection getConnection()
throws Exception
{
Class.forName(oracle.jdbc.driver.OracleDriver).newInstance();
return DriverManager.getConnection("...", "scott","tiger");
} public ResultSet getResultSet(String tableName)
throws Exception
{
if (tableName == null)
throw new Exception();
conn = getConnection();
if (conn == null)
throw new Exception(); String sql = "select * from " + tableName;
stmt = conn.createStatement();
return stmt.executeQuery(sql);
}
//关闭连接
public void closeConnection(){
try{
if(stmt!=null)
{
stmt.close();
System.out.println("stmt close");
}
if(conn!=null)
{
conn.close();
System.out.println("conn close");
}
}catch(Exception e){
System.out.println("login problem:"+e.getMessage());
}
}
}然后再B.java中,调用A类的关闭资源方法:
A a=new A();
a.closeConnection();大致思路是这样的
要末就用一个类直接操作数据库,每次完成就调用close()释放数据库连接。