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  | 
+---------------

ここで、各カラーコードのカウント、つまりセル値にアクセスしたいので、java(jdbc)の観点からどのようにアプローチする必要がありますか。これを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...この点に関する入力はありがたいです。

4

2 に答える 2

2

結果セットを繰り返し処理し、各列の値を取得する必要があります。

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 経由で結果セットにアクセスすることはお勧めしませんが、次のように実行できます。

最初にすべての行を繰り返し処理し、それらのclass属性を設定します。

<% 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;
} 
于 2012-11-21T11:36:39.683 に答える
1

実際には、の場合と同じようにempidまたはcolor-名前で列を検索するだけですCount。つまりResultSet、サイズは3になり、各行には2つの列があります:colorCount

JavaでJDBCを話す方法をすでに知っていると思いますか?

乾杯、

于 2012-11-21T11:33:43.457 に答える