2011-08-24 87 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是空的。

相關問題