This question already has answers here:
ResultSet exception - before start of result set
(6个答案)
去年关门了。
嗨,我在以下代码中收到错误消息:
public Component createComponents(){
    Panel pane = new Panel();
    try{
        Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/tonydb?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","root","1234");
        Statement myStmt = myConn.createStatement();
        ResultSet myRs = myStmt.executeQuery("select * from activeemployees");
        ResultSet myRs2 = null;
        while (myRs.next()) {
            myRs2 = myStmt.executeQuery("SELECT * FROM employee WHERE ID="+myRs.getString("IDnumber"));
            pane.add(new Label(myRs2.getString("firstName")+","+myRs.getString("lastName"),20,20));
        }
    }catch(Exception e){
        JOptionPane.showMessageDialog(null, e.getMessage());
    }
    return pane;
}

这是附加的图片:
不知道为什么。

最佳答案

为什么不在查询中使用INNER JOIN来简化查询?我想您不需要两个单独的sql语句,而是分别执行它们。相反,您可以使用join query合并两个表employeeactiveemployees中的数据并从中获取数据。它也会快得多。
您可以在结果集中尝试此新查询:

ResultSet myRs = myStmt.executeQuery("SELECT E.firstName AS firstName, E.lastName AS lastName FROM employee E INNER JOIN activeemployees A ON E.IDnumber = A.IDnumber");

然后,不再需要新的ResultSetmyRs2。您可以使用以下代码:
while (myRs.next()) {
    pane.add(new Label(myRs.getString("firstName")+","+myRs.getString("lastName"),20,20));
}

关于java - 从MySQL Java中“在结果集开始之前”获取错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50098805/

10-09 00:49