java - 返回多个结果集的查询

标签 java sql jdbc

我有一个 MSSQL 数据库并且正在运行以下查询:

select * from projects; select * from user

上面的查询一次返回两个结果集,我不能分别触发这两个查询。如何在 Java 类中同时处理两个结果集?

最佳答案

处理 JDBC 语句返回的多个 ResultSet 的正确代码:

PreparedStatement stmt = ...;
boolean isResultSet = stmt.execute();

int count = 0;
while(true) {
    if(isResultSet) {
        rs = stmt.getResultSet();
        while(rs.next()) {
            processEachRow(rs);
        }

        rs.close();
    } else {
        if(stmt.getUpdateCount() == -1) {
            break;
        }

        log.info("Result {} is just a count: {}", count, stmt.getUpdateCount());
    }

    count ++;
    isResultSet = stmt.getMoreResults();
}

重要提示:

  • getMoreResults()execute() 返回 false 表示语句的结果只是一个数字而不是 结果集
  • 您需要检查 stmt.getUpdateCount() == -1 以了解是否有更多结果。
  • 确保关闭结果集或使用 stmt.getMoreResults(Statement.CLOSE_CURRENT_RESULT)

关于java - 返回多个结果集的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9696572/

相关文章:

java - 如何检查数据库中的重复条目?

java - 如何在java中插入sql查询

java.lang.IllegalArgumentException : column '_id' does not exist - UploadActivity

java - 计算机猜测你的想法所需的猜测次数

MySQL - 返回第二个表中的最后一条记录,然后返回第一个表中的所有记录

.net - Entity Framework 模型是否可以传递 SQL 脚本以针对数据库运行

java - 将参数从 Activity 传递到另一个 Activity Fragments

java - 使用信号量的哲学家就餐

MySQL TRIM SELECT 结果输出

java - 将我的 Java 应用程序连接到 SQL Server 2012