java - 不使用 Java 验证结果集大小

标签 java jdbc

这是一个奇怪的问题。我知道我犯了一个小错误,但无法弄清楚其中到底是什么。

我正在执行一个查询,它有结果集。首先,我验证它是否没有记录,然后将 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/

相关文章:

java - 如何在调用存储过程时从前端设置 INOUT 参数

java - 在多个类之间共享一个 JDBC 连接池

java - 将 Realm 变量从其他类传递到适配器中的 getView

java - 改变 RabbitMQ 消费者权重

Java Refactor 导致循环引用

java - MySQL JDBC 连接器转义问题

java - 图像上传在 localhost 上工作正常,但在 jsp 中的服务器中工作不正常

java - 向 Java 代码中的空行添加缩进 (Eclipse IDE)

java - JSP 和 mysql 抛出 java.lang.classNotFoundException :com. mysql.jdbc.driver

java - Java 中的结果集未按我的预期工作