我有一个 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/