数据截断:截断不正确的DOUBLE值:

时间:2018-03-14 06:02:20

标签: java mysql jdbc

我一直试图解决这个问题几个小时,我不知道为什么会这样。当我尝试使用我制作的GUI更新我的一个“员工”时,我不断收到此错误。

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'test'

每当我在TableView中单击一个员工,然后更改某个字段时,我就会明白。这是我的GUI图片:

employee records

我的数据表中没有任何内容是DOUBLE,它们都是这样的:

mysql data table

我到处搜索了所有这些都说它与我的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();
    }
}

感谢任何帮助,如果您需要更多详情,请告诉我们!

1 个答案:

答案 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