我读到了Oracle中的execute和executeQuery方法之间的差异,并在下面看到了文本
executeQuery() - 这通常用于读取内容 数据库。输出将采用ResultSet的形式。通常 使用SELECT语句。
execute() - 如果你不知道用于执行SQL的方法 声明,可以使用此方法。这将返回一个布尔值。真正 表示结果是ResultSet ,FALSE表示它具有int值,表示查询影响的行数。
这是我的问题。我用execute方法执行一个过程,但它只返回一个整数值。我检索返回值如下:
stmt.execute();
output = stmt.getInteger(1);
close(stmt); // statement
close(connection); // connection
我不在这里使用ResultSet对象,因此我没有显式关闭任何类似ResultSet的东西。所以根据上面的文本,如果execute函数返回结果集,我的代码中的结果集会发生什么?它保持开放吗?如果是,我怎么能以这种方式关闭它?
答案 0 :(得分:0)
CallableStatement.getInt()
与ResultSet
无关,它与存储过程的输出参数有关。如果存储过程返回游标,则必须使用getResultSet()
并从那里处理结果。
关于关闭 - 关闭Statement
并不强制所有基于它的ResultSet
也被关闭,而IIRC,使用Oracle JDBC驱动程序,ResultSet
可能确实关闭Statement
关闭后仍保持打开状态。因此,如果存在,则必须明确关闭它。