gpt4 book ai didi

java - java sqlException结果集已耗尽

转载 作者:行者123 更新时间:2023-12-02 01:52:35 27 4
gpt4 key购买 nike

我一直收到错误耗尽的结果集,但并不真正知道我正在做的事情出了什么问题,我基本上试图将数据库中的 3 行存储到名为“Logement”的类的 3 个元素的数组中我的 uni 项目稍后将用于填充 javafx ui 中的多个复选框

package accesBD;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import metier.ConvIntToBool;
import metier.Logement;

public class LogementDAO {
TypeLogementDAO bd = new TypeLogementDAO();


public Logement[] findAll() throws SQLException {
Logement logements[] = null;
Connection cnx= SConnection.getInstance();
Logement logement = null;
try {
PreparedStatement st= cnx.prepareStatement("select* from logement");
ResultSet res= st.executeQuery();
int i =0;
while (res.next()) {
logement= new Logement(bd.find(res.getInt(1)), ConvIntToBool.boolToInt(res.getInt(2)) ,ConvIntToBool.boolToInt(res.getInt(3)),ConvIntToBool.boolToInt(res.getInt(4)),ConvIntToBool.boolToInt(res.getInt(5)),ConvIntToBool.boolToInt(res.getInt(6)));
//System.out.println(res.getRow());
logements[i]=logement;
i++;
}
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
return logements;//la collection retournée peut être vide
}
}

These是我尝试从数据库接收的 3 行

这是 find 方法的代码

public TypeLogement find(int id){
Connection cnx =SConnection.getInstance();
TypeLogement c=null;
try {PreparedStatement stp1=cnx.prepareStatement("select * from typelogement where id=?");
stp1.setInt(1, id);
ResultSet n= stp1.executeQuery();
while(n.next()){
c= new TypeLogement(n.getInt(1),n.getString(2),n.getDouble(3));
}
cnx.close();

} catch (SQLException e) {

e.printStackTrace();
}
return c;

}

最佳答案

看起来问题是因为您关闭了数据库连接:您可以使用 Connection cnx= SConnection.getInstance();findAll()find() 中获取连接。然后在 find() 中关闭连接。因此会发生以下情况:

  1. 您在 findAll() 中打开连接
  2. 您获得外部 ResultSet 并对其进行迭代
  3. 在循环中调用find()
  4. 您调用Connection cnx= SConnection.getInstance();并获取内部ResultSet
  5. 您在find()中关闭了连接。当您关闭连接时,它会关闭该连接中打开的所有结果集
  6. 外部 ResultSet 循环失败,因为结果集因 find() 方法中的连接关闭而关闭

您需要在 find() 方法中关闭 ResultSet,而不是关闭连接。

关于java - java sqlException结果集已耗尽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52766798/

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