gpt4 book ai didi

java 程序无法进入 while 循环以获得唯一行结果集

转载 作者:行者123 更新时间:2023-12-01 12:55:32 26 4
gpt4 key购买 nike

我有一个应包含 1 行的结果集(我已经对此进行了测试)。我的程序没有进入 while(rs2.next()) 循环,我在调试后注意到了这一点。这就是为什么我收到 SQLException :并非所有变量都绑定(bind)。

ResultSet constitues = cnx.createStatement().executeQuery(Request.getConstitues());

while(constitues.next()){
PreparedStatement ps = cnx.prepareStatement(Request.setNewConstitue());
PreparedStatement ps2 = cnx.prepareStatement(Request.getDossierFromNumeroParcelle());

ps2.setInt(1, constitues.getInt("NUM_ORDRE"));
ps2.setInt(2, constitues.getInt("NUM_PARCELLE"));

//rs2 contains one row
ResultSet rs2 = ps2.executeQuery();
// Program is not entering this loop
while(rs2.next()){
ps.setInt(1, rs2.getInt("NUM_DOSSIER"));
ps.setString(2, rs2.getString("INDICE"));
ps.setString(3, constitues.getString("OBSERVATIONS"));
ps.setInt(4, constitues.getInt("TYPE_CONSISTANCE"));
}

ps.executeUpdate();
rs2.close();
ps.close();

}

Request.getConstitues() 是:

 select * from PARC_CONSTITUES

Request.setNewConstitue() 是:

Insert into CONSTITUE(NUM_DOSSIER,INDICE,Observation,CODE_CONSISTANCE) values(?,?,?,?)

Request.getDossierFromNumeroParcelle() 是:

select NUM_DOSSIER,INDICE from PARC_PARCELLES where num_ordre = ? and num_parcelle= ?

为什么程序没有进入 while 循环?

最佳答案

我怀疑数据库中数据不可用或者无法从数据库检索数据。

但是在进行 while 循环之前无论如何都要检查这个条件

boolean isEmpty = ! rs.first();

并打印isEmpty进行调试。

所以使用这样的东西

if(!isEmpty)
{
while(rs2.next()){
ps.setInt(1, rs2.getInt("NUM_DOSSIER"));
ps.setString(2, rs2.getString("INDICE"));
ps.setString(3, constitues.getString("OBSERVATIONS"));
ps.setInt(4, constitues.getInt("TYPE_CONSISTANCE"));
}
}

关于java 程序无法进入 while 循环以获得唯一行结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23938276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com