数据截断错误(列item_code的数据太长)

时间:2016-08-27 01:42:43

标签: java mysql updates truncate

当我更新时,我得到了

  

数据截断错误(列item_codeat行#的数据太长)

我在DB中使用varchar(45) itemcode

String category="";

String item_code = txt_inventory_item_code.getText();

String item_name = txt_inventory_item_name.getText();

Format formatter = new SimpleDateFormat("yyyy-MM-dd");
String date = formatter.format(txt_inventory_date.getDate());

String expiry_date = formatter.format(txt_inventory_expiry_date.getDate());

int quantity=Integer.parseInt(txt_inventory_quantity.getText());

double unit_price=Double.parseDouble(txt_inventory_unit_price.getText());


try{
    st = conn.createStatement();
    String SQL = "Update inventory SET "
            + "item_code='"+txt_inventory_item_code+"',"
            + "item_name='"+txt_inventory_item_name+"',"
            + "date='"+formatter.format(txt_inventory_date.getDate())+"',"
            + "expiry_date='"+formatter.format(txt_inventory_expiry_date.getDate())+"',"
            + "quantity='"+txt_inventory_quantity+"',"
            + "unit_price='"+txt_inventory_unit_price+"' WHERE inventory_id Like "+txt_inventory_inventory_id.getText();
    st.executeUpdate(SQL);

    JOptionPane.showMessageDialog(null,"Updated Successfully");

}
catch (SQLException | HeadlessException e)
{
    JOptionPane.showMessageDialog(null,e);
}

2 个答案:

答案 0 :(得分:0)

除了您的代码有一些弱点之外,我建议验证模型实体的不同字段,具体取决于数据库表中具有相应列的限制。 希望这有帮助。

答案 1 :(得分:0)

您持久存储的数据比预期的要长。 数据库中的 item_codeat 列只需要小于或等于45个字符的字符串。

  

解决方案

1 - 如果您可以更改数据库。将 item_codeat 的数据类型更改为 TEXT

2-如果您无法更改数据库,则需要进行某种验证以限制客户/用户输入长度小于45的有效 item_codeat