为什么此查询没有返回任何结果?

时间:2011-08-24 04:24:43

标签: java mysql

我正在学习一些Java,出于某种原因,下面的代码没有返回任何结果?这段代码有问题吗? mysql数据库中有一条记录,其中studentIDint(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,而只是一个空的结果集。

2 个答案:

答案 0 :(得分:3)

只有在连接仍处于打开状态时才能使用ResultSet。在“断开连接”之前阅读它。

如果修复没有给出不同的结果,最可能的原因是查询与表中的任何行都不匹配。


你应该养成在finally块中关闭连接,流等的习惯,以防止资源泄漏。 (你的讲师应该解释了这一点。检查你的笔记/教科书。)


最后,由于您是初学者,因此值得指出您应始终遵循方法命名所接受的Java约定。 Java方法名称应以小写字母开头。 GetByID应为getByIDDisconnect应为disconnect

(如果您的讲师/导师没有或没有为此留下痕迹,他/她应该被判为在未来5年内针对软件工程行业的犯罪编写Visual Basic。)

答案 1 :(得分:0)

如果要在关闭连接后返回resultSet ,则必须使用CachedRowSet。 正如StephenC所说,关闭连接后,ResultSet为空。