如果先调用stmt->close(),再调用rset->close(),可能会出现无法预料的结果。
因为,大多数查询的ResultSet是由Statement调用execute或executeQuery()产生的。它相当于是创建ResultSet对象的工厂。
因此,使用时,最好先关闭ResultSet,再关闭Statement,再关闭Connection。
如果你还不解,可以将Oracle的jdbc驱动库,反编译一下,看看它的源代码。还是能看到Statement接口的实现和ResultSet的实现类中,拥有很多共同的成员。
因为,大多数查询的ResultSet是由Statement调用execute或executeQuery()产生的。它相当于是创建ResultSet对象的工厂。
因此,使用时,最好先关闭ResultSet,再关闭Statement,再关闭Connection。
如果你还不解,可以将Oracle的jdbc驱动库,反编译一下,看看它的源代码。还是能看到Statement接口的实现和ResultSet的实现类中,拥有很多共同的成员。
解决方案 »
- oracle数据库写入数据慢
- 菜鸟求一SQL语句,比较2个表中的时间字段,取大的那一个字段
- oracle几个小问题
- 请问有VC操作Oracle的好书或网站介绍没
- 如何控制job,在执行中遇到错误时就停止而不要反复执行??
- ORACLE 8。0。5升级到ORACLE 9I后,速度明显变慢,是什么原因呢?
- 关于一个简单的查询
- 请问ERWin和PowerDesigner两种设计工具的异同?
- 大家能不能给我介绍基本比较经典的Oracle书籍.
- 我导入数据的时候出现“不支持要求的字符集转换(从类型31到852)”的错误,请问该怎么办啊?
- Oracle数据库产生大量的归档日志
- 请问系统表空间的数据文件是否可以压缩?
多个语句就要多个Statement
每个Statement对应一个ResultSet,因为Statement是创建ResultSet的工厂,所以当你关闭Statement的时候也自动关闭了ResultSet
Statement.close()
Connection.close()