日期:2014-05-18  浏览次数:20825 次

使用jdbc,在没有声明明确变量时,如何关闭conn.createStatement创建的Statment??还是说不要关闭
据说一个Statement只能保持一个记录集
在我的方法中象下面这样写,可以同时取的多个记录集,想来虽然是同一个变量,每次都是创建一个新的statment赋值给它
所以没有问题,但是这样,之前使用的statment都没有办法显式关闭了,会有问题吗?该如何关闭它们?

public ResultSet ResRead(String Sql) throws Exception
{
try
{
if(!InComm.IsNone(Sql))
{
Stmt=Conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
return Stmt.executeQuery(Sql);
}
else
{return null;}
}
catch(Exception Err)
{throw new MyException(Err+"\r\n"+Sql);}
}

------解决方案--------------------
一般都是在finally里面关闭额
------解决方案--------------------
最好不要返回一个ResultSet,返回对象或List.
一般做法是:ResultSet 应该是局部变量.在函数中取出ResultSet 中值赋给对象等,然后把ResultSet 关闭,再把Stmt关闭.
------解决方案--------------------
您这个封装做法,肯定是不行的,你只能在同一个要访问数据库的DAO层中,依次做打开数据库,执行Statement,ResultSet,最后依次关闭ResultSetr Statement,Connection。