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

标签 java mysql jdbc

我有两个表,我需要为每个具有特定批处理的客户端循环并更新到另一个表。下面是我的代码

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

这里它只插入每个客户端的第一批,其他批处理的客户端不会循环。 我该如何解决这个问题?

最佳答案

在这段代码中

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

你递增了两次

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

关于java - 使用java在jdbc中的每个循环中只插入一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868630/

相关文章:

mysql - 使用 collat​​e 将 varchar 列排序为数字列

java - 保存时间戳数据,但仅使用 Java 中的日期

ssl - 使用 SSL 的 IBM i DB2 JDBC 加密

java - 使用 Cucumber、PicoContainer 和 Conductor 框架进行多态步骤定义

java - 在 JUnit 测试之间启动和停止 Jetty 服务器

java - 从网站获取文本并将其放入一行?

mysql - 是否可以使用 DRBD 进行 MySQL Active-Active 集群?

mysql - PHPMyAdmin 登录后显示空白屏幕

java - 从oracle数据库读取时出现多字节字符问题

java - 传递泛型映射有什么问题