【发布时间】:2017-01-12 08:16:09
【问题描述】:
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;
}
【问题讨论】:
-
截图中没有一条记录是重复的。请澄清您的问题。
-
我觉得很干净
-
我的意思是当我提交一个像员工姓名:Kylo Ren 代码:A 销售额:3000 这样的表格时,它总是在数据库表中分成三行,就像在图片中我只放一次 Kylo Ren但是有 3 排不同的 Kylo Ren 出来了。
-
这些是 3 个不同的行。看看 Kylo Ren 的 3 个钱栏
-
因此,您需要在所有进行这些调用的地方都记录下来,并进行更好的调试。无论您在哪里准备对
insert into MachineProblem1的调用,都会将该事实记录到带有时间戳的文本文件中。那些不是骗子,有些东西把不同的 moolah 值放在那里