您应该按照创建对象的相反顺序关闭对象。首先是ResultSet,然后是Statement,最后是Connection。
如果不关闭Statement,它将保持打开状态,并且可以使用它执行另一个查询(如果是PreparedStatement或CallableStatement,则可以更改查询参数)。
还请注意,您引用的是JDBC规范,它的实现取决于JDBC驱动程序提供程序。通常,您不应该信任它们,并且手动关闭这些对象。
另一件事--我认为更重要的是--如果您正在使用连接池(如在JBoss上),关闭连接只会将它释放回池,并且底层对象不会被释放。因此,建议始终手动释放您创建的所有对象。