это мой первый вопрос здесь, и моя проблема: у меня есть таблица в базе данных из 8 столбцов (expiration_date, компания, элементы, тип, мера, сумма, поле и количество), и в моей программе у меня те же 8 столбцовя хочу сделать цикл для строк таблицы и обновить (количество, поле и количество), если (expiration_date, company, items, type and measure) уже существует, прежде чем вставлять новую строку. это код, но он не работает
try {
String sel = "select * from DATA ";
PreparedStatement stt = con.prepareStatement(sel);
ResultSet rs = stt.executeQuery();
if(rs.next()){
int row = tbl.getRowCount();
for (int i = 0; i < row; i++) {
String dat = (String) tbl.getValueAt(i, 0);
String company = (String) tbl.getValueAt(i, 1);
String item = (String) tbl.getValueAt(i, 2);
String type = (String) tbl.getValueAt(i, 3);
String measure = (String) tbl.getValueAt(i, 4);
float box = (float) tbl.getValueAt(i, 5);
float amount = (float) tbl.getValueAt(i, 6);
float quantity = (float) tbl.getValueAt(i, 7);
String up = "update DATA set BOX= BOX +? , AMOUNT =AMOUNT +? ,QUANTITY =QUANTITY +? WHERE EXPIRATION_DATE='"+dat+"' and COMPANY='"+company+"' and ITEMS='"+item+"' and TYPEE='"+type+"' and MEASURE='"+measure+"' ";
PreparedStatement st = con.prepareStatement(up);
st.setObject(1, box );
st.setObject(2, amount);
st.setObject(3, quantity);
st.executeUpdate();
}
}else{
int row = tbl.getRowCount();
for (int i = 0; i < row; i++) {
String dat = (String) tbl.getValueAt(i, 0);
String company = (String) tbl.getValueAt(i, 1);
String item = (String) tbl.getValueAt(i, 2);
String type = (String) tbl.getValueAt(i, 3);
String measure = (String) tbl.getValueAt(i, 4);
float box = (float) tbl.getValueAt(i, 5);
float amount = (float) tbl.getValueAt(i, 6);
float quantity = (float) tbl.getValueAt(i, 7);
String in = "insert into DATA (EXPIRATION_DATE, COMPANY, ITEMS, TYPEE, MEASURE, BOX, AMOUNT, QUANTITY) values ( ?, ?, ?, ?, ?, ?, ?, ? )";
PreparedStatement stmt = con.prepareStatement(in);
stmt.setObject(1, dat);
stmt.setObject(2, company);
stmt.setObject (3, item );
stmt.setObject (4, type);
stmt.setObject (5, measure);
stmt.setFloat (6, box);
stmt.setFloat (7, amount);
stmt.setFloat (8, quantity);
stmt.executeUpdate();
}
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
левый рис для программы, правое окно для таблицы базы данных