通过 JDBC 驱动程序 - 使用多个结果集

使用返回多个结果集的内联 SQL 或 SQL Server 存储过程时,Microsoft SQL Server 2005 JDBC Driver 提供 SQLServerStatement 类的 getResultSet 方法,以检索返回的每个数据集。此外,当运行返回多个结果集的语句时,可以使用 SQLServerStatement 类的 execute 方法,因为它将返回一个 boolean 值,该值指示返回的值是结果集还是更新计数。
如果 execute 方法返回 true,则运行的语句已返回了一个或多个结果集。通过调用 getResultSet 方法可以访问第一个结果集。若要确定是否提供了多个结果集,可以调用 getMoreResults 方法,如果提供了多个结果集,则该方法返回 booleantrue。如果有多个结果集可用,则可以再次调用 getResultSet 方法进行访问,继续使用这个过程直到所有的结果集都得到处理。如果 getMoreResults 方法返回 false,则没有多个结果集要处理。
如果 execute 方法返回 false,则所运行的语句返回了更新计数值,可以通过调用 getUpdateCount 方法检索此值。

注意:
有关更新计数的详细信息,请参阅使用带有更新计数的存储过程


在下面的实例中,将向此函数传递 SQL Server AdventureWorks 示例数据库的打开连接,并构造一条 SQL 语句,该语句在运行后将返回两个结果集:

public static void executeStatement(Connection con) {
   try {
      String SQL = "SELECT TOP 10 * FROM Person.Contact; _" +
                   "SELECT TOP 20 * FROM Person.Contact";
      Statement stmt = con.createStatement();
      boolean results = stmt.execute(SQL);
      int rsCount = 0;

      //Loop through the available result sets.
     do {
        if(results) {
           ResultSet rs = stmt.getResultSet();
           rsCount++;

           //Show data from the result set.
           System.out.println("RESULT SET #" + rsCount);
           while (rs.next()) {
              System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
           }
           rs.close();
        }
        System.out.println();
        results = stmt.getMoreResults();
        } while(results);
      stmt.close();
      }
   catch (Exception e) {
      e.printStackTrace();
   }
}




在这种情况下,返回的结果集的数目为 2。但是,如此编写代码是为了在返回了未知数目的结果集时,例如在调用存储过程时,这些结果集也会全部得到处理。若要查看调用返回多个结果集和更新计数的存储过程的实例,请参阅处理复杂语句

注意:
调用 SQLServerStatement 类的 getMoreResults 方法时,会隐式关闭以前返回的结果集。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值