我正在学习一些Java,出于某种原因,下面的代码没有返回任何结果?这段代码有问题吗? mysql数据库中有一条记录,其中studentID
(int(10)
)为12。
public static ResultSet GetByID(int studentID) {
// This method loads the mysql driver and establishes the database connection
Connect();
ResultSet results = null;
try {
String query = "SELECT * FROM student where studentID = ?";
PreparedStatement statement = Connection.prepareStatement(query);
statement.setInt(1, studentID);
results = statement.executeQuery();
} catch (SQLException ex) {
LogException(ex);
} catch (Exception ex) {
System.out.println(ex);
}
// This method terminates the mysql connection.
Disconnect();
return results;
}
主叫代码是:
@Override
public ResultSet query() {
return DB.GetByID(getStudentID()); // this is 12
}
这不会返回null,而只是一个空的结果集。
答案 0 :(得分:3)
只有在连接仍处于打开状态时才能使用ResultSet
。在“断开连接”之前阅读它。
如果修复没有给出不同的结果,最可能的原因是查询与表中的任何行都不匹配。
你应该养成在finally
块中关闭连接,流等的习惯,以防止资源泄漏。 (你的讲师应该解释了这一点。检查你的笔记/教科书。)
最后,由于您是初学者,因此值得指出您应始终遵循方法命名所接受的Java约定。 Java方法名称应以小写字母开头。 GetByID
应为getByID
,Disconnect
应为disconnect
。
(如果您的讲师/导师没有或没有为此留下痕迹,他/她应该被判为在未来5年内针对软件工程行业的犯罪编写Visual Basic。)
答案 1 :(得分:0)
如果要在关闭连接后返回resultSet ,则必须使用CachedRowSet。 正如StephenC所说,关闭连接后,ResultSet为空。