当我更新时,我得到了
数据截断错误(列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);
}
答案 0 :(得分:0)
除了您的代码有一些弱点之外,我建议验证模型实体的不同字段,具体取决于数据库表中具有相应列的限制。 希望这有帮助。
答案 1 :(得分:0)
您持久存储的数据比预期的要长。 数据库中的 item_codeat 列只需要小于或等于45个字符的字符串。
解决方案
1 - 如果您可以更改数据库。将 item_codeat 的数据类型更改为 TEXT
2-如果您无法更改数据库,则需要进行某种验证以限制客户/用户输入长度小于45的有效 item_codeat 。