我试图计算随着时间的推移将它添加到工资表中的加班时间和工资存储在其他表中包含总基本每小时 我希望从2个表中得到结果,将它们显示在另一个表中的另一个存储库中以供将来参考
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);
}
答案 0 :(得分:0)
您收到的实际错误消息类似于“查看您的MySQL版本的手册,以便在第2行使用'sum(加班)'附近的正确语法”。此错误消息告诉您确切需要执行的操作。
查看手册:
https://dev.mysql.com/doc/refman/5.7/en/select.html
您可以看到SELECT语句语法最后没有包含分号。
分号是一个语句分隔符,在控制台上给出多个语句时很有用。 JDBC查询一次只能是一个语句,因此分号没有意义,并且是语法错误。
顺便说一句,你应该省略陈述Class.forName("com.mysql.jdbc.Driver");
。根本没有必要。它在早期版本中是必需的,但在过去15年左右的时间里是不必要的。