2016-08-27 2 views
0

Когда я обновляю, я получаюданных (данные слишком долго для столбца ITEM_CODE)

ошибка усечения данных (данные слишком долго для столбца item_codeat строки #)

Я использую 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

Опубликовать http://stackoverflow.com/help/mcve. – c0der

+0

Ну, ошибка в том, что код элемента слишком длинный для varchar (45). Вам также абсолютно необходимо узнать о подготовленных операциях (http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html), поскольку ваш код завершится неудачно, как только одно из текстовых полей будет содержать одну цитату , и он подвержен атакам SQL-инъекций. они также позволяют хранить даты как даты, а не форматировать их с конкретными для конкретной страны форматами. И, наконец, они делают код более читабельным и менее подверженным ошибкам. –

ответ

0

Независимо от вашего кода, которые имеют некоторые слабые места, я рекомендую проверяет различные поля вашей модели объекта, в зависимости от ограничений, которые имеют соответствующие столбцы на таблице базы данных. Надеюсь, что эта помощь.

0

Данные, которые вы сохраняете, слишком длинны, чем ожидалось. item_codeat В столбце в базе данных ожидаются только строки меньше или равные 45 символам.

Solutions

1 - Если вы можете изменить свою базу данных. Изменение типа данных item_codeat к TEXT

2- Если вы не можете изменить базу данных, которую нужно поставить какой-то проверки достоверности ограничить доступ клиентов/пользователей ввести действительный item_codeat, длина которого составляет менее 45.

Смежные вопросы