简体   繁体   English

使用java在jdbc中仅插入每个循环的一行

[英]inserting only one row of each loop in jdbc using java

I have a two tables, where i need to loop for each client with specific batches and update to another table.我有两个表,我需要为每个具有特定批次的客户端循环并更新到另一个表。 below is my code下面是我的代码

client Table
----------
client_id  
1
2
3

batch_meta_data_id Table
------------
client_id batch_id
1           12
1           13
2           14
2           15
2           16
3           17



Statement stmt = null;
stmt = conn.createStatement();
 sql = "SELECT client_id FROM client";
      ResultSet rs1 = stmt.executeQuery(sql);   
      while(rs1.next()){  
          if(rs1.next()){
              stmt = conn.createStatement();

              sql = "SELECT batch_meta_data_id FROM batchmetadata WHERE client_id = "+rs1.getInt("client_id");
              ResultSet batchSql = stmt.executeQuery(sql);  

              if(batchSql.next()){
                  stmt = conn.createStatement();
                  String sql1 = "INSERT INTO METRICS (client_id, batch_id, count)"
                           + "VALUES ( '"+rs1.getInt("client_id")+"','"+batchSql.getInt("batch_meta_data_id")+"',(SELECT count(*) FROM typist  where  client_id = '"+rs1.getInt("client_id")+"' and batch_meta_data_id = '"+batchSql.getInt("batch_meta_data_id")+"'))";
                  stmt.executeUpdate(sql1);     
              }
              }
      }

Here its inserting only first batch of each client,other batches of client are not getting looped.这里只插入每个客户端的第一批,其他批次的客户端不会循环。 How could i solve this?我怎么能解决这个问题?

In this code在这段代码中

while(rs1.next()){  
      if(rs1.next()){

You are incrementing twice你增加了两次

see

https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#next() https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#next()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM