2011-04-24 78 views
0

我有一張表格,其中有參賽者在完成測驗後得到的分數。然後,我通過用戶在java中處理mysql記錄

select distinct userName, max(points) as numpoints 
from tblscore 
group by userName 
order by numpoints desc 

選擇max(points)爲每個用戶和組I這給了我所有的得分最高的用戶的訂購。我想要將這些記錄存儲在一個數組中並對其進行處理,我想對每條記錄進行排名,再加上我希望顯示用戶有領帶的記錄。這怎麼能實現?該陣列將如何建立和處理,以迎合這一點。

+0

你正在使用jdbc,你知道結果集和語句,對嗎? – Bozho 2011-04-24 19:39:33

+0

是的,我正在使用jdbc,是的,我正在使用結果集 – devdar 2011-04-24 19:47:08

+0

,你想讓你的數組看起來像什麼?什麼數組? – Bozho 2011-04-24 19:54:47

回答

1
  1. 創建一個類別(例如UserScore)具有兩個字段 - usernamepoints
  2. 獲取ResultSet爲所需的查詢(經由Statement
  3. 定義List<UserScore> list = new ArrayList<UserScore>
  4. 循環的結果集,使用while (rs.next())並在每次迭代中創建一個UserScore類的新實例,設置其兩個字段(例如userScore.setPoints(rs.getInt("numpoints")),然後將該對象添加到list
  5. 如果你能做到List - 隨它去吧。如果你真的需要一個數組 - 使用list.toArray(..)

或者,你可以使用Apache commons-dbutils,與您共創UserScore下課後,您只要致電:

List<UserScore> list = new BeanListHandler(UserScore.class).handle(resultSet); 

注意,在這種情況下,你的字段應該和你返回的列名/別名一樣被調用。您也可以使用ArrayListHandler,而不是定義的類的列表,它會給你一個List<Object[]>,其中每列將是數組中的一個元素。

+0

好的,我做到了,我現在有一個UserScores類型的列表,我現在可以打印用戶的分數列表,但怎麼可以我操縱列表,以便我可以說哪些用戶已連接 – devdar 2011-04-24 20:52:38

+0

迭代它並查看兩個相鄰用戶是否具有相同的分數。 – Bozho 2011-04-24 20:55:08

+0

是的,我能夠看到兩個用戶具有相同的分數。我怎麼操縱這個說相同分數的用戶有領帶? – devdar 2011-04-24 21:26:35