通过JDBC调用Sybase存储过程时返回空结果集

通过JDBC调用Sybase存储过程时返回空结果集,第1张

通过JDBC调用Sybase存储过程时返回空结果集

您误解了的返回值

getMoreResults()
。您还忽略了的返回值
execute()
,此方法返回一个
boolean
指示第一个结果的类型的:

如果结果为

true
,则可使用
getResultSet()
来检索
ResultSet
,否则
getUpdateCount()
可使用以获取更新计数。如果是更新计数,
-1
则意味着没有更多结果。请注意,更新计数也将
-1
是当前结果为时的计数
ResultSet
。最好知道,
getResultSet()
如果没有更多结果或结果是更新计数,则应返回null(这是最后一个条件,为什么会有那么多
null
值)。

现在,如果要检索更多结果,请致电

getMoreResults()
(或它的兄弟接受
int
参数)。的返回值
boolean
与的含义相同
execute()
,因此
false

并不意味着不再有结果

如果

getMoreResults()
返回false和
getUpdateCount()
return
-1
(如Javadoc中所述),将没有更多结果。

本质上,这意味着如果您要正确处理所有结果,则需要执行以下 *** 作:

boolean result = stmt.execute(...);while(true) {    if (result) {        ResultSet rs = stmt.getResultSet();        // Do something with resultset ...    } else {        int updateCount = stmt.getUpdateCount();        if (updateCount == -1) { // no more results break;        }        // Do something with update count ...    }    result = stmt.getMoreResults();}

我的猜测是,在获得实际更新之前,您将获得大量更新计数

ResultSet

我对Sybase并不是很熟悉,但是它的表亲SQL Server具有“烦人”功能,如果您没有明确地将其放在

SET NOCOUNTON;
存储过程的开头,则可以从存储过程返回更新计数。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5499436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存