2009-10-07 60 views
5

你好這裏是我想要的,我連接到一個數據庫和檢索唯一ID列的最大元素,並將其分配給名爲maxID一個整型變量,這裏是我的方法:Java的ResultSet中,使用MAX SQL函數

int maxID = 0; 
Statement s2 = con.createStatement(); 
s2.execute("SELECT MAX(UniqueId) FROM MyTable");  
ResultSet rs2 = s2.getResultSet(); // 
while (rs2.next()){ 
    maxID = rs2.getInt(0); 
} 

什麼是解決這個問題的體面方式,它通過使用「rs2.next()」while循環感覺像是一種非常粗糙的方式。

感謝

回答

10
if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 
1

的.next()是從「無處」重新定位光標到行(如有)。

你可以測試它,如果你喜歡,儘管你這樣做是值得推薦的,所以不能在while循環中轉義。但如果你是肯定的查詢只會返回一個單行,你可以做到這一點

if (rs.next()) { 
    maxID = rs2.getInt(1); 
} 
+0

似乎是一個不錯的主意,但是,當我改變如上Eclipse是顯示這個錯誤: 說明\t資源\t路徑\t位置\t類型 不能對原始類型調用getInt(int)的布爾\t Alertmail.java \t/ALERTMAIL/src \t line 33 \t Java問題 – Hellnar 2009-10-07 07:46:14

+0

是的,'next()'返回一個布爾值,因此在'while()'循環中起作用。 – akf 2009-10-07 07:47:34

+0

是的,是的,你需要重新定位光標才能獲取任何數據,我衝我的答案。我不應該在這個晚上的這個時候看問題。我要編輯我的答案 – Juparave 2009-10-07 07:57:27

9

Boris Pavlović是差不多吧。

if (rs2.next()) { 
    maxID = rs2.getInt(1); 
} 

結果集中的列是從1開始的。而使用if而不是while的原因是您正在執行的查詢僅返回單個行。

+0

我剛剛修復了我的答案,並給你+1 – 2009-10-07 08:02:38