当我更新,我得到数据截断误差(太长列ITEM_CODE数据)
数据截断误差(数据太长,列item_codeat列#)
我使用varchar(45)
在DB中为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);
}
发布http://stackoverflow.com/help/mcve。 – c0der
嗯,错误是项目代码对于varchar(45)来说太长了。您还绝对需要了解准备好的语句(http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html),因为只要其中一个文本字段包含单引号,代码就会失败,并且会受到SQL注入攻击。他们还允许将日期存储为日期,而不必使用数据库特定的特定于语言环境的格式对其进行格式化。最后,他们使代码更具可读性并且不易出错。 –