Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在开始运行多个sql的结果集之前_Java_Sql_Resultset - Fatal编程技术网

Java 在开始运行多个sql的结果集之前

Java 在开始运行多个sql的结果集之前,java,sql,resultset,Java,Sql,Resultset,我目前正在申请一家餐馆。我目前正在处理的代码的想法是,它从一个组合框中获取名称,并将一个收据插入数据库,其中包含正在处理该代码的人员的员工编号。我尝试使用的代码是: RestaurantOrder sqlRestaurantOrder = new RestaurantOrder(); ActionListener printReceiptListner; printReceiptListner = (ActionEvent) -> { int ID

我目前正在申请一家餐馆。我目前正在处理的代码的想法是,它从一个组合框中获取名称,并将一个收据插入数据库,其中包含正在处理该代码的人员的员工编号。我尝试使用的代码是:

    RestaurantOrder sqlRestaurantOrder = new RestaurantOrder();
    ActionListener printReceiptListner;
    printReceiptListner = (ActionEvent) -> {
        int ID = Integer.parseInt(input1.getText());
        try {
            SystemManager manager = new SystemManager();
            ResultSet rs = manager.stmt.executeQuery(sqlRestaurantOrder.setIdSql(ID));

            while (rs.next()) {

                double totalPrice = rs.getDouble("sumprice");
                if (ID > 0) {
                    Receipt receiptSql = new Receipt();
                    String firstName = (String) cb.getSelectedItem();
                    String checkoutDate = new SimpleDateFormat("yyyyMMdd").format(Calendar.getInstance().getTime());
                    ResultSet rs2 = manager.stmt.executeQuery(receiptSql.getEmployeeId(firstName));
                    int employeeId = rs2.getInt("id");

                    while (rs2.next()) {

                    Receipt receiptSql2 = new Receipt();
                    ResultSet rs3 = manager.stmt.executeQuery(receiptSql2.SetStatusReceipt(employeeId, checkoutDate, ID, totalPrice));
                    while (rs3.next()) {
                    }
                    }

                }
            }

        } catch (SQLException k) {
            JOptionPane.showMessageDialog(null, k.getMessage());
        }
    };
声明如下:

public class Receipt {

    public String sql;
    public String sql2;

    public String getEmployeeId(String firstName){
        return sql2 = "SELECT id FROM employee WHERE firstName = '" + firstName + "';";
    }

    public String SetStatusReceipt(int employeeId, String checkoutDate, int id, double totalPrice){
        return sql = "INSERT INTO `receipt` (`employeeId`, `price`, `restaurantOrderId`, `checkoutDate`) VALUES (" + employeeId + " , " + totalPrice + ", " + id + ", " + checkoutDate + ");";
    };

}
我在结果集开始之前得到了一个错误,我查找了它的含义,但目前无法修复它。我们将不胜感激

如果我忘记发布更重要的代码,请让我知道我会更新它

您必须先打电话才能访问该
结果集的字段
。因此,您需要将
employeeId
的分配移动到
while
循环中:

while (rs2.next()) {
    int employeeId = rs2.getInt("id");
ResultSet.next()
的文档中:

ResultSet
光标最初位于第一行之前;对方法
next
的第一次调用使第一行成为当前行;第二个调用使第二行成为当前行,依此类推


请发布您看到的错误的stacktrace。这只是一个建议,如果您单独打电话获取组合框并设置收据会更好,这样会更干净,也更容易处理异常。