gpt4 book ai didi

java - Java返回结果集的方法

转载 作者:行者123 更新时间:2023-12-01 00:35:22 25 4
gpt4 key购买 nike

我正在尝试返回给定学生 ID 的结果集并显示 gpa。但是它说当结果集关闭时我无法执行操作。这是我的代码:

/**
* Returns a ResultSet with a row containing the computed GPA (named as gpa) for a given student id.
* You must use a PreparedStatement.
*
* @return
* ResultSet containing computed GPA
*/
public ResultSet computeGPA(String studentId) throws SQLException
{
ResultSet rst;

// TODO: Use a PreparedStatement
try(Connection con = connect()){

String sql = "SELECT gpa FROM student WHERE sid=?";
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setString(1, studentId);
rst = pstmt.executeQuery();

while(rst.next()){
System.out.println(rst.getString("gpa"));
}
}
return rst;
}

这是我得到的结果

Connecting to database. 2.96 Exception in thread "main" java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920) at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:804) at com.mysql.jdbc.ResultSetImpl.getMetaData(ResultSetImpl.java:3107) at EnrollJDBC.resultSetToString(EnrollJDBC.java:500) at EnrollJDBC.main(EnrollJDBC.java:59)

最佳答案

您使用try-with-resources,它会在您的try block 完成时关闭Connection。在 Java 中,当您关闭 Connection 时,您也会自动关闭与该连接关联的所有 ResultSet 对象。这就是异常告诉你的。您正在尝试使用封闭的 ResultSet。因此,您需要更改代码以仅在完全处理 ResultSet 时关闭连接。

由于您通过 id 执行 SELECT,您会得到一条记录或没有记录。那么为什么不返回该唯一值(如果它存在)或 null(或空字符串)如果具有此类 id 的学生不存在而不是从 返回 ResultSet 对象computeGPA() 方法?

关于java - Java返回结果集的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53051553/

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