gpt4 book ai didi

java - 如何在关闭 Java 连接之前返回 ResultSet

转载 作者:搜寻专家 更新时间:2023-10-30 22:31:02 25 4
gpt4 key购买 nike

我只想编写 1 个执行方法并在需要时重新使用它,而无需重写整个方法。下面是我返回 ResultSet 的方法。

public ResultSet executeSelect() {
Connection con = null;
PreparedStatement prepared = null;
ResultSet rs = null;
try {
con = C_DB.getConnection();
prepared = con.prepareStatement(this.getQuery());

if(!this.midQuery.equals("")) {
int i = 1;
for (String val: this.values) {
prepared.setString(i, val);
i++;
}
}

rs = prepared.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (prepared != null) {
prepared.close();
}
if (con != null) {
con.close();
}
} catch(SQLException e) {
e.printStackTrace();
}
}
return rs;
}

问题是在 executeSelect() 执行后,Connection、PreparedStatement 和 ResultSet 在返回数据之前关闭,所以我得到了这个错误 java.sql.SQLException: Operation not allowed after ResultSet closed

我想要返回 ResultSet 的原因是我可以为任何对象数据重新使用 executeData 方法。例如:

C_Query q = new C_Query(dataSearch,"SELECT * FROM people ", " ORDER BY id DESC");
ResultSet rs = q.executeSelect()

ObservableList<C_Person> peopleData = FXCollections.observableArrayList();
while(rs.next()){
C_Person person = new C_Person();
person.setFirstName(rs.getString("firstName"));
person.setLastName(rs.getString("lastName"));
peopleData.add(person);
}

C_Query q = new C_Query(dataSearch,"SELECT * FROM cars", " ORDER BY id DESC");
ResultSet rs = q.executeSelect()

ObservableList<C_Car> CarData = FXCollections.observableArrayList();
while(rs.next()){
C_Car car = new C_Car();
car.type(rs.getString("type"));
car.brand(rs.getString("brand"));
CarData.add(car);
}

我该如何解决这个问题?

最佳答案

关于java - 如何在关闭 Java 连接之前返回 ResultSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43284062/

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