【发布时间】:2011-08-25 02:24:59
【问题描述】:
我有 3 级嵌套循环,它应该执行一个查询,是一个更大的 web 服务的一部分,但问题是最外面的循环只执行了一半的代码如下:
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;
}
问题在于sexarra.lengh=2 的第一部分,恰好在最外层的循环中,它应该迭代两次,但是一旦与 k=0 相关的循环完成,什么程序就会抛出异常,我的意思是它不执行与K=1 相关的循环。几天来,我一直遇到嵌套循环和preparedstatement 的问题,这是最新的问题,我不知道我做错了什么。感谢大家的时间和精力。
【问题讨论】:
-
您能否正确格式化您的代码以便我们更好地阅读?另外,您是说抛出异常吗?在这种情况下,也请把例外作为问题的一部分。
-
而 0 个接受的答案(共 8 个)并不是很鼓舞人心。
-
@momo 我只知道抛出异常是因为 catch(SQLException e) 已激活,但我没有完全看到异常,因为此代码在 Web 服务的服务器端运行,仅"ris" 返回到客户端。
-
@Nikita,我在注册和用户名方面遇到了一些问题,当我第一次开始使用该网站时,几乎所有问题都是旧问题,不知道它是如何工作的,但我确实给出了我最终如何反馈解决了问题,现在我再次使用旧用户名,我仍然没有权利选择自己的答案作为解决方案。
-
O(n^3)的运行时间。我相信它很可怕。但似乎你需要它:(
标签: java mysql sql jdbc nested-loops