Java 迭代表内容并有选择地插入/更新记录

Java 迭代表内容并有选择地插入/更新记录,java,loops,if-statement,sql-update,sql-insert,Java,Loops,If Statement,Sql Update,Sql Insert,这是我的第一个问题,我的问题是: 我在数据库中有一个8列的表(过期日期、公司、项目、类型、度量、金额、方框和数量) 在我的程序中,我有相同的8列,我想在表行上循环并更新(金额、方框和数量),如果(过期日期、公司、项目、类型和度量)已经存在,则插入新行。 这是代码,但不起作用 试试看{ String sel=“从数据中选择*”; 准备好的报表stt=con.准备好的报表(sel); ResultSet rs=stt.executeQuery(); 如果(rs.next()){ int row=t

这是我的第一个问题,我的问题是: 我在数据库中有一个8列的表(过期日期、公司、项目、类型、度量、金额、方框和数量) 在我的程序中,我有相同的8列,我想在表行上循环并更新(金额、方框和数量),如果(过期日期、公司、项目、类型和度量)已经存在,则插入新行。 这是代码,但不起作用

试试看{
String sel=“从数据中选择*”;
准备好的报表stt=con.准备好的报表(sel);
ResultSet rs=stt.executeQuery();
如果(rs.next()){
int row=tbl.getRowCount();
对于(int i=0;i

以什么方式不工作?你能给我们看一些输入示例、期望的输出和实际输出吗?我通过添加数据库和程序的图片更新了帖子。问题是数据库中没有任何操作,我看不到您在任何地方提交事务。尝试将
con.commit()
放在方法的末尾。我放了它,但也没有任何操作:(我尝试了这个,但它只插入不更新:
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());

      }
      }