gpt4 book ai didi

java - 在mysql查询期间java代码中进行一些迭代后出现无限循环 "hangs"

转载 作者:行者123 更新时间:2023-11-29 13:27:59 25 4
gpt4 key购买 nike

我有一段很长的java代码,它使用selenium webdriver和firefox来测试我的网站。如果我不能在这里复制它,请原谅我。它有一个无限的 while 循环来重复执行其功能。这就是它应该做的。另外,我不使用多线程。

  1. 有时,它会卡住。我使用 Windows 系统,代码在命令提示符下运行。当它卡住时,不会引发错误或异常。它类似于“它挂起”(只有运行代码的窗口挂起)。然后我必须使用 CTRL + C 。有时它会在那之后恢复工作,有时它会终止并重新启动它。它工作正常,但经过一些循环后,它再次“挂起”。另外,我注意到它通常是在执行查询 mysql 数据库的方法之一期间。

  2. 代码运行无限循环。每次,它都会查询 mysql 数据库,从特定表(每个循环中有一个值)获取一个值(其“status”字段不是“done”),并继续使用该值进行测试。在循环结束时,表已更新(该值的“状态”列设置为“完成”)。当该特定表中没有“状态”不等于“完成”的新值时,理想情况下应显示“无新值”。然而,在使用所有值之后,它只是占用最后使用的值(即使其状态在上一个循环结束时更新为“完成”)并继续。然后我必须终止执行并再次运行代码。这次当无限循环开始时,它会查询数据库并正确显示“NO NEW VALUE”,再次查询,再次显示消息等等(这是它应该做的)

我使用 con.close() 关闭 sql 连接。

似乎在运行循环几次后,某些资源在某处耗尽。但这只是一个疯狂的猜测。

任何人都可以建议问题是什么以及如何解决它吗?

下面是一段相关代码:

try{
String sql = "select something from somewhere where id = ? and is_deleted = '0';";

System.out.println("\n"+sql + "\n? = " + pID);

PreparedStatement selQuery1 = conn.prepareStatement(sql);

selQuery1.setString(1, pID);

ResultSet rs1 = selQuery1.executeQuery();

//Extract data from result set
while(rs1.next() && i1<6){
//do something


}//end while loop

String sql2 = "select something2 from somewhere2 where id = ? and is_deleted = '0';";
System.out.println("\n"+sql2 + "\n? = " + pjID);


PreparedStatement selQuery2 = conn.prepareStatement(sql2);
selQuery2.setString(1, pjID);
ResultSet rs2 = selQuery2.executeQuery();



//Extract data from result set
while(rs2.next() && i1<6){
//do something

}//end while loop

System.out.println("\nDone.");

conn.close();
}catch (SQLException e) {
flag=false;
}

请注意,任何地方都不会引发异常。在显示两个查询语句后,运行代码的窗口就会卡住(偶尔也会卡住)。

最佳答案

我忘记关闭查询和结果集。仅关闭连接应该隐式关闭查询和结果集,但它并不总是有效。

关于java - 在mysql查询期间java代码中进行一些迭代后出现无限循环 "hangs",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19876897/

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