当我更新时,我得到
数据截断错误(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。