Итерация по содержанию таблицы и выборочная вставка / обновление записей - PullRequest
0 голосов
/ 08 октября 2019

это мой первый вопрос здесь, и моя проблема: у меня есть таблица в базе данных из 8 столбцов (expiration_date, компания, элементы, тип, мера, сумма, поле и количество), и в моей программе у меня те же 8 столбцовя хочу сделать цикл для строк таблицы и обновить (количество, поле и количество), если (expiration_date, company, items, type and measure) уже существует, прежде чем вставлять новую строку. это код, но он не работает

enter image description here

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());

      }
      }

левый рис для программы, правое окно для таблицы базы данных

...