使用java在jdbc中只插入每个循环的一行
我有两个表,其中我需要使用特定的批处理为每个客户机循环,并更新到另一个表。下面是我的代码使用java在jdbc中只插入每个循环的一行,java,mysql,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 st
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()){
您正在递增两次
看
在此代码中
while(rs1.next()){
if(rs1.next()){
您正在递增两次
看
它不应该是while(batchSql.next())
?它不应该是while(batchSql.next())
?