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



当我更新时,我得到

数据截断错误(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);
}

独立于有一些弱点的代码,我建议根据数据库表中相应列的限制来验证模型实体的不同字段。

您持久化的数据比预期的长得多。item_codeat列在数据库中只期望小于或等于45个字符的字符串。

解决方案

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

2-如果你不能改变数据库,你需要做一些验证来限制客户端/用户输入一个有效的item_codeat长度小于45。

相关内容

  • 没有找到相关文章

最新更新