Java 循环遍历结果集,我需要在满足条件时更新一个表
我的代码中有一个循环。它迭代结果集。只要Java 循环遍历结果集,我需要在满足条件时更新一个表,java,database,loops,jdbc,resultset,Java,Database,Loops,Jdbc,Resultset,我的代码中有一个循环。它迭代结果集。只要qc=0,它就应该更新数据库中的一个表 但它只是在第一次遇到qc=0时才更新数据库表。然后它就从while循环中出来了。它不会在下一次迭代中检查“qc”的另一个值 我已经删除了普通语句的用法,并在代码中使用了一个准备好的语句。现在这解决了我的问题 非常感谢。你们真是太棒了。问题是重复使用相同的语句来执行循环中的第二个查询。在同一语句对象上执行新查询时,将关闭该对象上以前打开的所有语句,包括它们的结果集 我有点惊讶,您没有收到结果集关闭的SQLExcepti
qc=0
,它就应该更新数据库中的一个表
但它只是在第一次遇到qc=0
时才更新数据库表。然后它就从while循环中出来了。它不会在下一次迭代中检查“qc”的另一个值
我已经删除了普通语句的用法,并在代码中使用了一个准备好的语句。现在这解决了我的问题
非常感谢。你们真是太棒了。问题是重复使用相同的
语句来执行循环中的第二个查询。在同一语句
对象上执行新查询时,将关闭该对象上以前打开的所有语句,包括它们的结果集
我有点惊讶,您没有收到结果集关闭的SQLException
还要注意,像您的DatabaseConnection
这样的类有点奇怪,因为它使正确管理JDBC资源变得更困难,而不是更容易。我建议更改执行SQL的方式,以使用PreparedStatements
。这是为了防止SQL注入您有SQL注入漏洞。您可以通过使用带有占位符的PreparedStatements
?
将其删除,稍后您将使用这些占位符设置为要在查询中使用的数据,例如使用stmt.setInt(1,pdno)代码>“然后它只是从while循环中出来。它不会进入下一次迭代”while update代码是否可能引发异常,从而中断循环?我们可以看看您如何处理SQLException
?不要只将重要信息作为注释发布(特别是当它是无法在注释中正确格式化的代码示例时)。相反,请使用选项将其添加到您的问题中。您是否可以从Eclipse或其他版本向我们显示任何错误代码?
String sql5 = "select t$pdno ,t$opno, t$qcmp , t$qtbf from ttisfc010100 where t$pdno = "+pdno+" and t$opno <= "+opno ;
ResultSet getData3 = db.getStmt().executeQuery(sql5);
while(getData3.next()) {
int pd , op , qc , qt ;
pd = getData3.getInt(1);
op = getData3.getInt(2);
qc = getData3.getInt(3);
qt = getData3.getInt(4);
String sql7="";
if(qc==0)
{
sql7 = "update ttisfc010100 set t$qcmp = "+quantity+" , t$qtbf = "+quantity+" where t$pdno = "+pd+" and t$opno = "+op;
db.getStmt().executeUpdate(sql7);
}
}
catch (SQLException e) {
e.printStackTrace(); }
public class DatabaseConnection
{
Statement stmt;
public void openConnection() {
Class.forName(classForName);
conn = DriverManager.getConnection(driver+dsn, user, password);
stmt = conn.createStatement();
}
public Statement getStmt()
{
if(stmt==null)
{
stmt = this.getNewStmt();
}
return stmt;
}
public Statement getNewStmt() {
Statement newStmt;
try {
newStmt = conn.createStatement();
}
catch(Exception e){
newStmt = stmt;
}
return newStmt;
}