2011-08-24 92 views
-1

我靠学校的一些Java,出于某种原因下面的代码不返回任何结果?这段代码有问题吗?有在MySQL数据库中的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; 
} 

调用代码的单个记录,具有studentID(这是int(10))是:

@Override 
public ResultSet query() { 
    return DB.GetByID(getStudentID()); // this is 12 
} 

这不返回null,而只是一个空结果集。

+0

假设你确定studentID == 10,并且没有抛出异常吗? – cwallenpoole

+0

您是否收到任何错误/异常?如果不是,那么您使用的学生证是否存在于数据库E中? – Waqas

+0

我已检查并正常返回,但是当我读取从此返回的ResultSet时,没有记录。它不属于任何一个catch块。 – Eli

回答

3

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

如果修复不会给您不同的结果,最可能的原因是查询不匹配表中的任何行。


您应该进入关闭连接的习惯,溪流等在finally块,以避免资源泄漏。 (您讲师应该有解释说,检查你的笔记/课本。)


最后,因为你是一个初学者,值得指出的是,你应该总是符合公认的Java约定的方法命名。 Java方法名称应该以小写字母开头。 GetByID应该是getByIDDisconnect应该是disconnect

(如果你的讲师/导师没有或者没有停靠标志为,他/她应该受到谴责,为未来5年编写的Visual Basic for针对软件工程行业的罪行。)

+0

哈哈,谢谢Stephen C.我在一个.NET环境中工作,旧的习惯很难过。你的东西工作完美,谢谢! – Eli

0

如果要在返回结果集后关闭连接,则必须使用CachedRowSet。如StephenC所说,关闭连接后,您的ResultSet是空的。

相关问题