我一直试图解决这个问题几个小时,我不知道为什么会这样。当我尝试使用我制作的GUI更新我的一个“员工”时,我不断收到此错误。
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'test'
每当我在TableView中单击一个员工,然后更改某个字段时,我就会明白。这是我的GUI图片:
我的数据表中没有任何内容是DOUBLE,它们都是这样的:
我到处搜索了所有这些都说它与我的SQL查询的语法有关,但看起来不错,所以我不知道为什么。
以下是我的更新按钮的代码:
public void handleUpdateEmployee(ActionEvent event) {
String sql = "UPDATE employees set firstName = ?, lastName = ?, gender = ?, age = ?, position = ?, image = ? where employeeNum =?";
try {
Integer employeeNum = Integer.valueOf(employeeNumField.getText());
String firstName = firstNameField.getText();
String lastName = lastNameField.getText();
String gender = genderField.getText();
Integer age = Integer.valueOf(ageField.getText());
String position = positionField.getText();
String image = imageField.getText();
pst = con.prepareStatement(sql);
pst.setInt(1, employeeNum);
pst.setString(2, firstName);
pst.setString(3, lastName);
pst.setString(4, gender);
pst.setInt(5, age);
pst.setString(6, position);
pst.setString(7, image);
pst.executeUpdate();
loadEmployeeData();
} catch (SQLException e) {
e.printStackTrace();
}
}
感谢任何帮助,如果您需要更多详情,请告诉我们!
答案 0 :(得分:2)
您以错误的顺序绑定查询参数。仔细查看语句,然后查看更新后的代码:
String sql = "UPDATE employees set firstName = ?, lastName = ?, gender = ?, ";
sql += "age = ?, position = ?, image = ? where employeeNum =?";
pst.setString(1, firstName); // first parameter (?) in statement
pst.setString(2, lastName);
pst.setString(3, gender);
pst.setInt(4, age);
pst.setString(5, position);
pst.setString(6, image);
pst.setInt(7, employeeNum); // LAST parameter (?) in statement