Jdbc 这两种形式的语句.getMoreResults()之间的关系是什么?
方法Jdbc 这两种形式的语句.getMoreResults()之间的关系是什么?,jdbc,Jdbc,方法语句.getMoreResults()有两种变体:一种不接受参数,另一种接受整数参数。第二个变量接受三个常量之一CLOSE\u CURRENT\u RESULT,KEEP\u CURRENT\u RESULT,以及CLOSE\u ALL\u RESULTS。我的问题是,第一个变量是否相当于传递给第二个变量的某个常量(如果是,是哪一个?)是getMoreResults()相当于getMoreResults(CLOSE\u CURRENT\u RESULT)或getMoreResults(CLO
语句.getMoreResults()
有两种变体:一种不接受参数,另一种接受整数参数。第二个变量接受三个常量之一CLOSE\u CURRENT\u RESULT
,KEEP\u CURRENT\u RESULT
,以及CLOSE\u ALL\u RESULTS
。我的问题是,第一个变量是否相当于传递给第二个变量的某个常量(如果是,是哪一个?)是getMoreResults()
相当于getMoreResults(CLOSE\u CURRENT\u RESULT)
或getMoreResults(CLOSE\u ALL\u RESULTS)
还是两者都不是?JDBC是接口和所需行为的集合。是否调用getmoresults()
callgetmoresults(int)
取决于各个JDBC实现
然而,美国石油学会的API文件指出:
移动到此语句
对象的下一个结果,如果它是ResultSet
对象,则返回true
,并隐式关闭使用方法getResultSet
获得的任何当前ResultSet
对象
这相当于调用getMoreResults(Statement.CLOSE\u ALL\u RESULTS)
定义如下:
该常量指示调用getMoreResults
时应关闭以前保持打开状态的所有ResultSet
对象
使用any和all可能会引起一些混淆,但它们都表明以前打开的任何ResultSet
都应该关闭
有趣的是(正如您在评论中指出的),getMoreResults(Statement.CLOSE\u ALL\u RESULTS)
应该抛出一个SQLFeatureNotSupportedException
,如果驱动程序不支持多个打开的结果
然而,apidoc和JDBC规范中描述的getMoreResults()
的行为确实表明它应该是等效的
JDBC 4.2规范在13.1.2.3中规定:
默认情况下,对方法getMoreResult
s的每次调用都会关闭以前的所有调用
ResultSet
方法返回的对象getResultSet
基于此,在不支持多个打开结果的驱动程序中,
getMoreResults()
相当于getMoreResults(Statement.CLOSE\u CURRENT\u RESULT)
,而在支持多个打开结果的驱动程序中,它相当于getMoreResults(Statement.CLOSE\u ALL\u results)
。我认为这种区别有点奇怪,也没有必要,因为在一个不支持多个打开结果的驱动程序中,关闭当前结果与关闭所有结果是一样的(因为只有一个结果)。我将与JDBC专家组讨论这个问题。:“移动到此语句对象的下一个结果,如果它是ResultSet对象,则返回true,并隐式关闭使用getResultSet方法获得的任何当前ResultSet对象。”@a_horse_,没有名称,你是说getMoreResults()
等同于getMoreResults吗(关闭当前结果)
或togetMoreResults(关闭所有结果)
?我无法从您的评论中得出您支持的答案。反参数:根据JavaDoc,如果DatabaseMetaData.supportsMultipleOpenResults()
为false,getMoreResults(关闭所有结果)
应该抛出SQLFeatureException
,但是getMoreResults()
不应该抛出SQLFeatureException
。在我看来,这意味着getMoreResults()
和getMoreResults(关闭所有结果)
是不等价的,而且getMoreResults()
实际上相当于getmoresults(CLOSE\u CURRENT\u RESULT)
@SimonKissane,这是一个很好的观点。尽管如此,getmoresults()
谈论的是“ResultSet
object*(s)*”我认为这里的Javadoc的措辞非常混乱,无论采用哪种解释,都会有合理的理由支持另一种解释。@SimonKissane我将与JDBC专家组讨论这个问题,也许他们可以为JDBC 4.3澄清这一点