MySQL output has duplicate inputs
我在使用 MySQL 时遇到问题,其中重复的输入被插入到我创建的表中,我使用 JSP 和 Servlet 在 WebApp 中实现了一个数据库。
例如,当我在表单中输入以下内容时: 员工姓名:Kylo Ren 代号:A 销量:3000
只需提交一次表单,它就会分成 3 个不同的行。
public void computeGross(Connection connection){
switch(employeeCode){
case "A":
setGross(grossA+(getEmployeeSales()*grossSalesA));
break;
case "B":
setGross(grossB+(getEmployeeSales()*grossSalesB));
break;
case "C":
setGross(grossC+(getEmployeeSales()*grossSalesC));
break;
}
insertRecord(connection);
}
//compute for the commission, if sales>2500; commission=7.5% of sales
public void computeCommission(Connection connection){
if(employeeSales>2500)
setCommission(getEmployeeSales()*commissionVal);
else {
setCommission(0);
}
insertRecord(connection);
}
//compute takehome pay, takehome pay = summation of gross and commission
public void computeTakeHomePay(Connection connection){
setResult(getGross()+getCommission());
insertRecord(connection);
}
private void insertRecord(Connection conn){
try{
String sql="insert into MachineProblem1(EmployeeName, EmployeeCode, EmployeeSales, EmployeeGross, EmployeeCommission, EmployeeResult)"+ "values(?,?,?,?,?,?)";
PreparedStatement pstmnt= conn.prepareStatement(sql);
pstmnt.setString(1, employeeName);
pstmnt.setString(2, employeeCode);
pstmnt.setDouble(3, employeeSales);
pstmnt.setDouble(4, gross);
pstmnt.setDouble(5, commission);
pstmnt.setDouble(6, result);
//now commit to database
pstmnt.executeUpdate();
}catch(SQLException sqle){
sqle.printStackTrace();
}
}
// get records
public ResultSet getAllRecords(Connection conn){
ResultSet records = null;
try{
String sql="select*from MachineProblem1";
PreparedStatement pstmnt= conn.prepareStatement(sql);
records= pstmnt.executeQuery();
}catch(SQLException sqle){
sqle.printStackTrace();
}
return records;
}
最佳答案
从结果来看,您应该从计算方法中删除insertRecord(connection)
方法调用,只有在计算完成后才调用insertRecord(connection)
。
或者,您可以使用 Insert ... On Duplicate Update
SQL 来检查键是否已经存在。
关于java - 检查 MySQL 中的重复插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39322463/