Java 中对空结果集的无效操作

问题描述 投票:0回答:1

我正在使用 intellij 在 Java 中开发一个应用程序,但我在空结果集上收到无效操作。我认为问题出在“insertData”方法上,但我不确定为什么。这是一家在线商店,下订单后,订单应该出现在购物车中。该订单确实出现在购物车中,但在单击确认订单的按钮后,我收到错误消息。但是,当我从“确认”方法中删除 insertData() 行时,订单已成功确认,但随后它没有出现在购物车中。帮忙吗?

public void insertData() throws RecordException {
    Model model = Model.getInstance();
    Order order = new Order();
    order.setUser(model.getUser());
    order.setPayment_amount(model.getRecord().getPrice());
    //order.setAddress(addressName.getText());
    orderManager.add(order);

    IntermediateTable intermediateTable = new IntermediateTable();
    List<Order> lista = orderManager.getAll();
    if(!lista.isEmpty()) {
        for (Order o : lista) {
            if ((o.getPayment_amount() - order.getPayment_amount()) < 0.00001 && o.getUser().equals(order.getUser())) {
                model.setOrder(o);

                intermediateTable.setOrder(model.getOrder());
            }
        }
        intermediateTable.setRecord(model.getRecord());
        IntermediateManager intermediateManager = new IntermediateManager();
        intermediateManager.add(intermediateTable);
    }else{
        throw new RecordException("No orders found. Cannot proceed with data insertion.");
    }
}


public void confirm(ActionEvent actionEvent) throws  RecordException {

    try {
        insertData();
        Stage stage = new Stage();
        FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/confirmorder.fxml"));
        ConfirmOrderController confirmOrderController = new ConfirmOrderController();
        loader.setController(confirmOrderController);
        Parent root = loader.load();
        stage.setTitle("Confirm order");
        stage.setScene(new Scene(root, USE_COMPUTED_SIZE, USE_COMPUTED_SIZE));
        stage.setResizable(false);
        //stage.setOnHiding();
        stage.show();
    } catch (IOException | RecordException e) {
        System.out.println(e.getMessage());
    }

}
java fxml
1个回答
0
投票

您似乎正在使用 IntelliJ IDEA 开发 Java 应用程序,并且遇到“对空结果集无效操作”错误。根据提供的代码,我可以看到该错误可能与数据库操作有关,可能涉及 orderManager 或 IntermediateManager。

错误消息“对空结果集的操作无效”通常表示您正在尝试对不包含任何数据的数据库结果集执行操作。如果您的 orderManager.getAll() 调用返回空列表,则可能会发生这种情况,这可能会导致后续循环出现问题。

以下几个步骤可帮助您解决问题:

检查数据库操作:检查 orderManager.getAll() 方法的实现以及您正在使用的任何其他与数据库相关的方法。确保他们正确查询数据库并返回预期的数据。

日志记录:将日志记录语句添加到代码中以跟踪数据流并识别潜在问题。您可以在循环之前打印列表的大小,看看它是否为空。

错误处理:检查数据库相关代码中的错误处理机制。确保异常得到正确处理并提供有意义的错误消息。

调试:使用 IntelliJ 的调试功能来单步执行代码并检查变量。这可以帮助您确定问题发生的确切位置。

检查依赖关系:如果您使用第三方库或框架进行数据库访问,请确保设置了正确的依赖关系和配置。

数据库连接:验证您的数据库连接是否在应用程序的整个生命周期中正确建立和维护。

测试数据:确保数据库中有可以触发预期行为的测试数据。如果您的数据库为空,您可能需要使用示例数据填充它以进行测试。

事务管理:如果您的数据库操作涉及事务,请确保正确管理事务并根据需要提交或回滚事务。

如果没有应用程序及其依赖项的完整上下文,就很难查明确切的问题。我建议仔细检查数据库操作,添加调试日志记录,并使用调试器单步执行代码并确定问题发生的位置。如果问题仍然存在,请考虑向同事或在线社区寻求帮助,您可以在其中分享有关代码和工作环境的更多详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.