2012-11-21 48 views
0

在我的申請,我存儲的顏色在我的表emp這樣的值:要選擇查詢的小區

+---------+------------------+ 
| emp  | id  | color | 
+---------+------------------+ 
| hary | 123  | red | 
+---------+------------------+ 
| lary | 125  | green | 
+---------+------------------+ 
| gary | 038  | red | 
+---------+------------------+ 
| Kris | 912  | blue | 
+---------+------------------+ 
| hary | 123  | red | 
+---------+------------------+ 
| Ronn | 334  | green | 
+---------+------------------+ 

現在計數的顏色代碼多少次出現我寫這:

select color,count(*) Count 
from emp where (color like '%bl%' or color like '%ree%') 
group by color 

,所以我得到像

+--------------- 
| color |Count | 
+--------------- 
| red | 3 | 
+--------------- 
| blue | 1 | 
+--------------- 
| green | 2 | 
+--------------- 

結果現在我想牛逼O訪問每種顏色代碼的數量,即單元格的值,所以我怎麼有接近它在Java方面(JDBC).I've寫了這個在JSP頁面中:

<html 
<body> 
<div> 
<table> 
<% while(rs.next()){ %> 

    <tr> 
     <th>HDYK Stat</th><th>NUMBER</th> 
    </tr> 

    <tr style="color: #0DA068"> 
     <td><%=rs.getString("color") %></td><td><%= rs.getInt("Count")%></td> 
    </tr> 

    <tr style="color: #194E9C"> 
     <td><%=rs.getString("color") %></td><td><%= rs.getInt("Count")%></td> 
    </tr> 
    <tr style="color: #ED9C13"> 
    <td><%=rs.getString("color") %></td><td><%= rs.getInt("Count")%></td> 
    </tr> 

<%  
} 
%> 
</table> 
</div> 
</body> 
</html> 

但它的重複3次:像紅色:3,藍色:3,綠色:1,紅色:1,藍色:1,綠色:1,紅色:2 ... 有關這方面的任何輸入將不勝感激。

回答

2

您需要迭代結果集並提取每列值。通過所有行的

首先迭代,並設置其屬性class

public static void viewTable(Connection con) 
    throws SQLException { 

    Statement stmt = null; 
    String query = 
     "select color,count(*) Count from emp where (color like '%bl%' or color like'%ree%') group by color"; 

    try { 
     stmt = con.createStatement(); 
     ResultSet rs = stmt.executeQuery(query); 
     while (rs.next()) { 
      String color = rs.getString("color"); 
      int count = rs.getInt("Count"); 
      System.out.println("Color: " + color + " Count: " + count); 
     } 
    } catch (SQLException e) { 
     //Something 
    } finally { 
     if (stmt != null) { stmt.close(); } 
    } 
} 

雖然,我不建議你訪問結果通過JSP建立,這是可以做到如下。

<% while(rs.next()){ %> 

    <tr> 
     <th>HDYK Stat</th><th>NUMBER</th> 
    </tr> 

    <tr class="<%=rs.getString("color") %>"> 
     <td><%=rs.getString("color") %></td><td><%= rs.getInt("Count")%></td> 
    </tr> 
<%  
} 
%> 

定義每個顏色的樣式在你的CSS

.red{ 
    color: #0DA068; 
} 

.blue{ 
    color:#194E9C; 
} 

.green{ 
    color: #ED9C13; 
} 
+0

感謝,但我想每個顏色的數量,如紅色:3,藍:1,綠色環保:2,它顯示3爲所有顏色代碼。 –

+0

你是否改變了查詢?你確定小組的條款還在嗎?我沒有看到任何會導致這種情況的代碼,並不是說沒有,但我沒有看到它。 –

+0

我編輯了我的答案,但它仍然是正確的打印方式和一次。 –

1

實際上就像你對emp,idcolor - 你只需要在名稱Count上查找列。也就是說,您的ResultSet將具有3的大小,並且每行將有兩列:colorCount

我假設你已經知道如何在Java中談論JDBC?

歡呼聲,