栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

您误解了的返回值

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

  • true
    :结果是
    ResultSet
  • false
    :结果是更新计数

如果结果为

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;
存储过程的开头,则可以从存储过程返回更新计数。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/507109.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号