这是一个奇怪的问题。我知道我犯了一个小错误,但无法弄清楚其中到底是什么。
我正在执行一个查询,它有结果集。首先,我验证它是否没有记录,然后将 DTO 属性之一设置为 false。如果有记录,则迭代并做一些业务。
rs = partyPreparedStatement.executeQuery();
if(!rs.next()) { // It has records, but I'm checking with ! operator to make sure it goes to false or true.
purchaseDto.setPOIssued(false);
} else {
while (rs.next()) { // It has records, but still its not going to execute business
// Do some business here.
break;
}
}
设计正确吗?
最佳答案
如果返回数据,您将忽略第一行。
第一次调用 next()
已经将 ResultSet 定位到第一行(如果有数据)。但是您不对该行执行任何操作,而是立即再次调用 next()
(在 while
条件下),从而完全忽略第一行。
如何解决这个问题取决于个人喜好。我个人会简单地计算处理的行数:
如果您只想处理第一行,则不需要花一段时间:
rs = partyPreparedStatement.executeQuery();
if (rs.next()) {
purchaseDto.setPOIssued(true);
// process the data here
} else {
purchaseDto.setPOIssued(false);
}
关于java - 不使用 Java 验证结果集大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174371/