CallableStatement里包含2个ResultSet,怎么得到这2个ResultSet?

解决方案 »

  1.   

    执行EXECUTE()调用存储过程
    用getResult()得到结果集
    用getMoreResult()滚动到下一个结果集
      

  2.   

    用getMoreResult()滚动到下一个结果集:执行getMoreResult()后,第一个结果集就被关闭了,不能使用。我现在想同时使用这2个记录集,执行call.getMoreResults(Statement.KEEP_CURRENT_RESULT);报错:
    java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseCallableStatement.getMoreResults(I)Z
    org.apache.commons.dbcp.DelegatingCallableStatement.getMoreResults(DelegatingCallableStatement.java:315)为什么?
    另:getResult()默认得到的是第一个记录集吧????????
      

  3.   

    getMoreResult()之后再getResult()得到的是第二条记录集
      

  4.   

    getResult()默认得到的是第一个记录集。
    要想同时操作两个结果集那用CachedRowSet缓存结果好了
      

  5.   

    to  littcai(空心大白菜):
    具体怎么使用???
      

  6.   

    boolean moreResult = statement.execute();                 // 表示结果是 ResultSet
    boolean moreUpdate = statement.getUpdateCount() != -1;    // 表示结果是 "UPDATE ..." 或者 "INSERT ..." 的结果while( moreResult || moreUpdate )
    {
    if( moreResult )
    {
    ResultSet rs = statement.getResultSet();
    // ... 相关操作
    }
    else
    {
    int count = statement.getUpdateCount();
    // ... 得到的结果是更新了多少行,或者插入了多少行,或者删除了多少行等等
    } moreResult = statement.getMoreResults();
    moreUpdate = statement.getUpdateCount() != -1;
    }
      

  7.   

    补充:同一个 Statement 能同时得到 2 个 ResultSet
      

  8.   

    补充:同一个 Statement “不能”同时得到 2 个 ResultSet  (前一句写错了 :( )