java.sql.SQLException:在结果集开始之前。。。如何删除此错误

java.sql.SQLException:在结果集开始之前。。。如何删除此错误,java,mysql,netbeans-8,Java,Mysql,Netbeans 8,我使用java和mysql开发了员工工资管理。。 我想生成一份PDF文档。。。 但当我点击“生成工资单”按钮时,就会出现这个错误。。。 我的生成单张按钮代码如下: enter code here private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String value = txt_firstn

我使用java和mysql开发了员工工资管理。。 我想生成一份PDF文档。。。 但当我点击“生成工资单”按钮时,就会出现这个错误。。。 我的生成单张按钮代码如下:

enter code here
          private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    String value = txt_firstname.getText();
    String value0 = txt_surname.getText();
    String value1 = txt_id.getText();
    String value2 = txt_desig.getText(); 
     String value3 = txt_dep.getText();

        JFileChooser dialog = new JFileChooser();
        dialog.setSelectedFile(new File(value +" "+ value0+"-Salary Slip"+".pdf"));
        int dialogResult = dialog.showSaveDialog(null);
        if (dialogResult==JFileChooser.APPROVE_OPTION){
            String filePath = dialog.getSelectedFile().getPath();
            try {
        // TODO add your handling code here:


        String sql ="select * from Deductions where emp_id = '"+value1+"'";
        pst=conn.prepareStatement(sql);
         rs=pst.executeQuery(); 
        String val = rs.getString(5);
        String reason = rs.getString(6);

        rs.close();
        pst.close();

        String sq ="select * from Allowance where emp_id = '"+value1+"'";
        pst=conn.prepareStatement(sq);
        rs=pst.executeQuery(); 


       int calcTotal = Integer.parseInt(txt_salary.getText());
       float x = Float.valueOf(rs.getString(9));
       int v = Integer.parseInt(val);
       float total = calcTotal +x-v;

       Document myDocument = new Document();
       PdfWriter myWriter = PdfWriter.getInstance(myDocument, new FileOutputStream(filePath));
       myDocument.open();

       myDocument.add(new Paragraph("PAY SLIP",FontFactory.getFont(FontFactory.TIMES_BOLD,20,Font.BOLD )));
       myDocument.add(new Paragraph(new Date().toString()));
       myDocument.add(new Paragraph("-------------------------------------------------------------------------------------------"));
       myDocument.add((new Paragraph("EMPLOYEE DETAILS",FontFactory.getFont(FontFactory.TIMES_ROMAN,15,Font.BOLD))));
       myDocument.add((new Paragraph("Name of Employee: " +value + " "+value0,FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN))));
       myDocument.add((new Paragraph("Designation: "+value2,FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN))));
       myDocument.add((new Paragraph("Department: "+value3,FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN))));
       myDocument.add(new Paragraph("-------------------------------------------------------------------------------------------"));
       myDocument.add(new Paragraph("SALARY",FontFactory.getFont(FontFactory.TIMES_ROMAN,15,Font.BOLD)));
       myDocument.add(new Paragraph("Basic Salary: $"+calcTotal,FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("Overtime: "+rs.getString(2)+" Hours",FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("Medical: $" +rs.getString(3),FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("Bonus: $"+rs.getString(4),FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("Other: $"+rs.getString(5),FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("-------------------------------------------------------------------------------------------"));
       myDocument.add(new Paragraph("DEDUCTION",FontFactory.getFont(FontFactory.TIMES_ROMAN,15,Font.BOLD)));
       myDocument.add(new Paragraph("Deduction Details: "+reason,FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("Total Deductions : $"+val ,FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("-------------------------------------------------------------------------------------------"));
       myDocument.add(new Paragraph("TOTAL PAYMENT",FontFactory.getFont(FontFactory.TIMES_ROMAN,15,Font.BOLD)));
       myDocument.add(new Paragraph("Total Earnings: "+rs.getString(9),FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("Net Pay : " +total,FontFactory.getFont(FontFactory.TIMES_ROMAN,10,Font.PLAIN)));
       myDocument.add(new Paragraph("-------------------------------------------------------------------------------------------"));


       myDocument.newPage();
       myDocument.close();  
       JOptionPane.showMessageDialog(null,"Report was successfully generated");

 }
    catch(Exception e){
        JOptionPane.showMessageDialog(null,e);


 }
 finally {

        try{
           rs.close();
           pst.close();

        }
        catch(Exception e){
        JOptionPane.showMessageDialog(null,e);

        }

     }
      }

} 

在使用getString等之前,您需要调用
ResultSet#next()

    String sql ="select * from Deductions where emp_id = '"+value1+"'";
    pst=conn.prepareStatement(sql);
    rs=pst.executeQuery(); 
    if(rs.next()) {              // here
      String val = rs.getString(5);
      String reason = rs.getString(6);
    }

next()
call每次将光标向前移动一行。结果集光标最初位于第一行之前;对方法next的第一次调用使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。

在使用getString等之前,需要调用
ResultSet\next()

    String sql ="select * from Deductions where emp_id = '"+value1+"'";
    pst=conn.prepareStatement(sql);
    rs=pst.executeQuery(); 
    if(rs.next()) {              // here
      String val = rs.getString(5);
      String reason = rs.getString(6);
    }

next()
call每次将光标向前移动一行。结果集光标最初位于第一行之前;对方法next的第一次调用使第一行成为当前行;第二次呼叫使第二行成为当前行,依此类推。

显示的错误是哪一行?显示的错误是哪一行?您是在我最近更新应答后还是之前尝试的?你现在可以试试吗?你是在我最近更新答案之后还是之前尝试的?你现在能试试吗?