Java 我正在计算加班时间,从表中得到结果,然后用等式来计算

Java 我正在计算加班时间,从表中得到结果,然后用等式来计算,java,mysql,jdbc,Java,Mysql,Jdbc,我试图计算一段时间后的加班时间,将其添加到工资中。加班时间存储在考勤表中,工资存储在其他表中,包含总的基本小时工资 我想从这两个表中得到结果,在java中显示它们,在另一个表中的另一个存储中显示它们,以供将来参考 int Eid = Integer.parseInt(jTextField2.getText()); try{ Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getCon

我试图计算一段时间后的加班时间,将其添加到工资中。加班时间存储在考勤表中,工资存储在其他表中,包含总的基本小时工资 我想从这两个表中得到结果,在java中显示它们,在另一个表中的另一个存储中显示它们,以供将来参考

int Eid = Integer.parseInt(jTextField2.getText());
try{  
    Class.forName("com.mysql.jdbc.Driver");  
    Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/hr","root","adam");

    String query="SELECT *  FROM sallary where Eid ="+Eid +";"
    java.sql.PreparedStatement preparedStatement = null;
    preparedStatement = con.prepareStatement(query);
    String select="select 83 *((time_to_sec(sum(overtime)) /60)/60)from att where Eid="+Eid +";";

    java.sql.PreparedStatement preparedStatement2 = null;
    preparedStatement2 = con.prepareStatement(select);

    int eid;
    double basic ,total,hourly;
    ResultSet rs2 = preparedStatement2.executeQuery();

    ResultSet rs = preparedStatement.executeQuery();

    double overtime=rs2.getDouble(1);

    // I tried this on MySQL command line it worked, however on java its error:
    // the right syntax to use near 'sum(overtime)' at line 2

    eid =rs.getInt("Eid");
    basic =rs.getDouble("basic");
    total=rs.getDouble("total");
    hourly=rs.getDouble("hourly");
    Object[] row = {eid,basic,total,hourly,overtime};

    model = (DefaultTableModel) st.getModel();

    model.addRow(row);   

} catch (ClassNotFoundException | SQLException ex) {
    Logger.getLogger(payroll.class.getName()).log(Level.SEVERE, null, ex);
}       

您得到的实际错误消息类似于请参阅MySQL版本手册,以了解第2行“sumovertime”附近使用的正确语法。此错误消息准确地告诉您需要执行的操作

查看手册:

您可以看到SELECT语句语法的末尾没有分号

分号是一个语句分隔符,在控制台上给出多个语句时非常有用。JDBC查询一次只有一条语句,因此分号毫无意义,是一个语法错误


顺便说一下,您应该省去Class.forNamecom.mysql.jdbc.Driver;语句;。根本没有必要这样做。它在早期版本中是需要的,但在过去15年左右的时间里一直是不必要的。

错误是什么?sql语法错误在第2行的“sumovertime”附近使用正确的语法