나는 쿼리를 실행하기로되어있는 3 레벨 중첩 루프가 있지만 더 큰 웹 서비스의 일부이지만 가장 바깥 쪽 루프는 다음과 같이 절반 만 실행된다.3 레벨 중첩 루프 쿼리는 외부 루프를 실행하지 않을 것이다
PreparedStatement ps = conn.prepareStatement("INSERT INTO malattia (nome, eta, descrizione, sesso, etnia, sintomi) values (?, ?, ?, ?, ?, ?)");
if(sexarra.length == 2){
for(int k=0; k<sexarra.length; k++) {
for(int i=0; i<selec.length; i++){
for(int j=0;j<sintom.length;j++){
ps.setString(1, malattia);
ps.setInt(2, eta);
ps.setString(3, descrizione);
ps.setString(4, sexarra[k]);
ps.setString(5, selec[i]);
ps.setString(6, sintom[j]);
ps.executeUpdate();
}
}
}
}
else {
for(int i=0; i<selec.length; i++){
for(int j=0;j<sintom.length;j++){
ps.setString(1, malattia);
ps.setInt(2, eta);
ps.setString(3, descrizione);
ps.setString(4, sexarra[0]);
ps.setString(5, selec[i]);
ps.setString(6, sintom[j]);
ps.executeUpdate();
}
}
}
ps.close();
//ds.close();
conn.close();
ris = "si";
} catch (SQLException e) {
System.out.println("Errore: " + e.getMessage());
return ris;
}
}
return ris;
}
문제는 완료, 정확하게 가장 바깥 쪽 두 번 반복하도록되어 루프,하지만 프로그램에 즉시 = 0 k에 대한 루프를 예외가 발생 sexarra.lengh=2
첫 번째 부분 낳는, I K=1
과 관련된 루프를 실행하지 않는다는 의미입니다. 나중에 중첩 루프에 문제가 발생하여 preparedstatement
일이 가장 최근의 일이며, 내가 뭘 잘못하고 있는지 모릅니다. 시간과 노력에 감사드립니다.
올바르게 읽을 수 있도록 코드를 올바르게 포맷 할 수 있습니까? 또한, 예외가 발생했다는 말입니까? 이 경우 예외 사항을 질문의 일부로 넣어주십시오. – momo
0에서 대답을 수락 한 것은별로 고무적이지 않습니다. –
@momo 나는 catch (SQLException e)가 활성화 되었기 때문에 예외가 throw되지만이 코드는 웹 서비스의 서버 측에서 실행 중이므로 "ris"만 반환된다는 사실을 알지 못합니다. 고객 입장에서. – tutak