JSPでのmysql操作(count)

このQ&Aのポイント
  • JSPでmysqlDriverを使用し、count文を使用する時なのですが、grntが1の行と0の行の数をそれぞれ数えたいのです。
  • JSP上で表示する時にgrntの1と0は表示されるのですがcountが表示されません。
  • どうすればいいのかよくわかりません。わかる方教えてください。
回答を見る
  • ベストアンサー

JSPでのmysql操作(count)

JSPでmysqlDriverを使用し、count文を使用する時なのですが。 grntは1か0が入っていて、複数行あります。そのgrntが1の行と0の行の数をそれぞれ数えたいのです。 SELECT grnt,count(grnt) from user group by grnt と書いてmysql上で実行すると、grntとその個数が得られるのですが、 JSP上で表示する時にgrntの1と0は表示されるのですがcountが表示されません。<c:out value="${row.count}" />という書き方では駄目なのでしょうか?。<c:out value="${row.count(grnt)}" />と書くと、 デフォルトの名前空間が指定されていない時には、関数 count はプリフィクス付きで使用しなければいけません とエラーメッセージが表示されるのですが、どうすればいいのかよくわかりません。 わかる方教えてください。宜しく御願いします。 <driver="org.gjt.mm.mysql.Driver" user="" password="" var="ds" /> <sql:query var="rs" dataSource="${ds}"> SELECT grnt,count(grnt) from user group by grnt </sql:query> <table border="1"> <tr><th>grnt</th><th>count</th></tr> <c:forEach var="row" items="${rs.rows}" varStatus="staus"> <tr> <td><c:out value="${row.grnt}" /></td> <td><c:out value="${row.count}" /></td> <tr> </c:forEach> </table>

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

count(grnt)に名前を付けてあげればいいのでは? > SELECT grnt,count(grnt) as cnt from user group by grnt > <td><c:out value="${row.cnt}" /></td>

bell_xxx
質問者

お礼

出来ました。ありがとうございます。 as で名前をつけれるのですね。 助かりました。

関連するQ&A

  • JavaScriptでの配列表示の表示制御

    Javaの配列をJSPでテーブルに表示する際に、 配列の最初の要素(1つ)だけを表示して、 残りの要素はデフォルト非表示にしたいです。 「開く」ボタンを押下すると、配列の残りの要素を表示する、 というような作りにしたいのですが JavaScript部分をどう書いたら実装できるかがわかりません。 今現在、全表示時で下のような感じです。 ご教授お願い致します。 似たようなページがありましたらお教え頂けると幸いです。 <table> <tr> <th>配列</th> </tr> <c:forEach items="${配列型}" var="あ"> <tr> <td><c:out value="${あ.中身}" /></td> </tr> </c:forEach> </table> <input type="submit" value="開く" onclick="toOpen()"></input>

  • JSPからMYSQLへの接続について

    はじめまして 初めて質問をさせていただきます。 qazxsw1と申します。 タイトルの通り、JSPからMYSQLに接続するプログラムなのですが、下記のようなエラーが出て、その後試行錯誤しましたがやはりうまくいきません。 java.sql.SQLException: Access denied for user 'mysql'@'localhost' (using password: YES) 参考にさせていただいたサイトは以下の通りです。 http://www.hellohiro.com/jspdb.htm mysql-connector-java-○.○-bin.jarファイルは[Tomcatのフォルダ]\shared\libにあります。 バージョンはTomcat4.1、MySQL Server4.1です。 ソースコードは以下の通りです。 データベース名、ユーザ名、パスワードは伏せてあります。 お手数ですが、詳しい方がいらっしゃいましたらよろしくお願いします。  <%@ page contentType="text/html; charset=Shift_JIS" %> <%@ page import="java.sql.*" %> <% Connection con = null; Statement stmt = null; try { // ドライバクラスをロード Class.forName("org.gjt.mm.mysql.Driver"); // データベースへ接続 String url = "jdbc:mysql:///データベース名?useUnicode=true&characterEncoding=SJIS"; con = DriverManager.getConnection(url, "ユーザ名", "パスワード"); // ステートメントオブジェクトを生成 stmt = con.createStatement(); // 全ての行を検索するSQL文を作成 String sql = "SELECT * FROM kaiin_tbl"; // クエリーを実行して結果セットを取得 ResultSet rs = stmt.executeQuery(sql); %> <html> <head> <title>JSPでDB接続</title> </head> <body> <table border="1"> <tr> <th>NO</th> <th>言語</th> <th>メッセージ</th> </tr> <% // 検索された行数分ループ while(rs.next()){ %> <tr> <td><%=rs.getInt("NO") %></td> <td><%=rs.getString("LANGUAGE") %></td> <td><%=rs.getString("MESSAGE") %></td> </tr> <% } // end while %> </table> </body> </html> <% } catch (Exception e) { out.println("<font color=red><h3>エラー!</h3></font>" + e); e.printStackTrace(); } finally { // データベースへの接続をクローズします try { if (stmt!=null) { stmt.close(); } if (con!=null) { con.close(); } } catch (Exception e) { e.printStackTrace(); } } %>

  • php + mysql でフォーム作成時のエラー

    データベースから取り出したデータをラジオボタンで選択し、それをデータベース(別のテーブル)に追加させる機能を作りたいです。 非常に初歩的なことだとは思うのですがご教授ください。 MySQL 4.0.27 PHP 5.2.11 <FORM ACTION="cone3.php" METHOD="post"> <?php $srv = ""; // サーバー名 $id = ""; // ユーザーID $passwd = "; // パスワード $dbn = ""; // データベース名 $sql = "SELECT code, lname, lecturer, kind, gradetype FROM Lecture"; // SQL文 // データベースに接続する $db = mysql_connect($srv,$id,$passwd); mysql_select_db($dbn,$db); $rs = mysql_query($sql,$db); //--- テーブルのレイアウト --- 開始 -----------------------> print("<TABLE><TR>"); print("<TR><th> </th><th>講義名</th><th>教員</th><th>科目区分</th><th>配当学年</th></tr>"); while($row = mysql_fetch_array($rs)) { print '<tr><td><input type="radio" name="regist" value="$row['code']"></td>'; print '<td>' . $row['lname'] . '</td>'; print '<td>' . $row['lecturer'] . '</td>'; print '<td>' . $row['kind'] . '</td>'; print '<td>' . $row['gradetype'] . '</td>'; print '</tr>'; print ("</TR>"); } print("</TABLE>"); print_r($_POST); echo "<br />\n"; mysql_free_result($rs); mysql_close($db); //--- 終了 ---> ?> <input type="submit" name="submit" value="送信"> </form> 以上のようなソースでラジオボタンで配列の$row[code]の値を送りたいんですがうまくいきません。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • リストに入ったインスタンスをjspで表示させたい

    idやpassやユーザーの情報が入ったインスタンスgu1,gu2,gu3があります。 そのインスタンスをリストに入れ、最終的にJSP側に飛ばしたいです。 JSPで受け取ったリストをすべてテーブルタグ上に表示させたいのですがうまくいきません。 request.setAttribute("list",”文字列”);であれば受け渡しができるのですが、インスタンスとなると難しく・・・。 ご教授お願い致します。 サーブレット側 list.add(gu1); list.add(gu2); list.add(gu3); request.setAttribute("list",list); JSP側 <table border="1"> <c:forEach var="item" items="list">    <tr> <td>${item.Id} </td>←ここが間違えている気がします。 <td>${item.pass} </td>  </tr> </c:forEach> </table>

  • mysql php ループ列の行の値を比べたい

    php、mysqlを見よう見まねでやっている 初心者です。 以下のような表をphpで作りました。 これでできた表の d列の行の値(文字)を全て比べて 値がその他の行と一行でも違っていたら (他の行と揃って同じでなかったら) errorを出したいと思っています。 どのような式を書いたらd列の全ての行の 値(文字)を調べ、errorを出すことが できるのでしょうか? <tr> <th>a</th> <th>b</th> <th>c</th> <th>d</th> </tr> <? while ( $row = mysql_fetch_array( $result )){ ?> <tr> <td><?= $row['a'] ?></td> <td><?= $row['b'] ?></td> <td><?= $row['c'] ?></td> <td><?= $row['d'] ?></td> </tr> <? ; } ?> 結果 a   b  c    d aaa bbb ccc ddd aaa bbb ccc ddd aaa bbb ccc dde→(errorを出したい) errorを出せれば下記のようなif文にしたいと思っています。 <? if($d==error){XXX;} else{ooo;} ?> 上記式も見ようまねでよくわかっていなく、 質問が理解して頂けるかどうかですが、 どうかご教授の程よろしくお願い致します。

    • ベストアンサー
    • PHP
  • JSPのタグリブを使ったDBアクセスの基本的な記述

    JSPのスクリプトレットを使ってとりあえず以下のコードを書きました。 とりあえず動いています。しかし今っぽく無くダサいので タグリブを使った記述に書き換えようと思っています。 ---------------------- ResultSet rs = st.executeQuery(sql); ResultSetMetaData mdata = rs.getMetaData(); int numberOfColumns = mdata.getColumnCount(); for (int i = 1; i < numberOfColumns + 1; i++) { out.println("\t<tr><th>" + mdata.getColumnName(i)); } while (rs.next()) { out.println("\t<tr>"); for (int i = 1; i < numberOfColumns + 1; i++) { out.println("\t\t<td>" + rs.getString(i)); } } ---------------------- 最終的にはコネクション取得の部分からタグにしたいのですが 取り合えずばループ部分だけでも変更したいと取り組みました。 いろいろダメなところはあるのですが、 下記のコードすらまともにかけていない状態です。 ---------------------- <c:forEach var="i" begin="1" end="2"> ${mdata.columnName(${i})} </c:forEach> ---------------------- とりあえずは引数が必要なgetterの記述側からないのですが 上記の(ダメダメな)タグのコードを無視し意図を汲み取って その先のコードまで教えていただけると大変助かります。 よろしくお願いします。

  • mysql_fetch_array取得結果を2行で

    mysql_fetch_arrayで取得した結果を、 2行で表示させるには、どうすればよいでしょうか? ※そのままだと横に長くなり過ぎるので、 複数行にして、テーブル横幅を抑えたい、です。 <現状> mysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error()); mysql_select_db("mydb"); $result = mysql_query("SELECT * FROM mytable"); $body .= "<table> <tr> <th>ID</th> <th>氏名</th> </tr>"; while ($row = mysql_fetch_array($result)) { $body .= "<tr> <td></td> <td>".$row[name]."</td> <td>".$row[preid]."</td>

    • ベストアンサー
    • PHP
  • JSPからMysqlへの接続

    タイトルどおり、以下のようなコードでMysqlデータベースに接続しようとしました。 <%@ page contentType="text/html; charset=Shift_JIS" import="java.sql.*" %> <html> <head> <title>データを表示する</title> </head> <body> <% //データベース設定 String sv = "localhost"; //サーバ名 String db = "test"; //データベース名 String user = "feifei"; //ユーザ名 String pass = "feifei"; //パスワード String encode = "EUC_JP"; //文字コード //データベースに接続する Class.forName("org.gjt.mm.mysql.Driver"); String url = "jdbc:mysql://" + sv + "/" + db + "?user=" + user + "&password=" + pass + "&useUnicode=true&characterEncoding=" + encode; Connection conn = DriverManager.getConnection(url); //データを取得する Statement st = conn.createStatement(); String sql = "SELECT * FROM table1"; //実行するSQL ResultSet rs = st.executeQuery(sql); //データを全件表示する out.println("<table border=0>"); while(rs.next()){ out.println("<tr>"); out.println("<td>" + rs.getInt("id") + "</td>"); out.println("<td>" + rs.getString("name") + "</td>"); out.println("<td>" + rs.getInt("point") + "</td>"); out.println("</tr>"); } out.println("</table>"); //データベース接続を閉じる conn.close(); %> </body> </html> しかし、なぜかわかりませんが、表示した内容のうち日本語はすべて[?]と文字化けしてしまいます。 ちゃんとディレクティブで「charset=Shift_JIS」と指定しているのになぞです。 どうか教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • JAVA JSPにてSQL UPDATE文が実行されない

    翔泳社「10日でおぼえるJSP/サーブレット」をもとにJSP/サーブレットを学習中です。この書籍の6-3データベースのデータの更新、削除の項で、サンプルが上手く動作しないので、みなさんにご教授願いたく投稿させていただきました。長文になりますがよろしくお願いいたします。 内容はまず、以下のフォームにデータベースからデータを取得し、更新、削除行うというものです。 「ファイル名p_update1.jsp」 <form method="POST" action="p_update2.jsp"> <input type="submit" value="更新/削除" /> <input type="reset" value="取消" /> <table border="0"> <tr style="background:#00ccff"> <th>削除</th><th>ISBNコード</th><th>書名</th> <th>価格</th><th>出版社</th><th>刊行日</th> </tr> <% while(rs.next()){ %> <tr style="background:#ffffcc"> <td><input type="checkbox" name="delete<%=count %>" value="1" /></td> <td><%=rs.getString("isbn") %> <input type="hidden" name="isbn<%=count %>" value="<%=rs.getString("isbn")%>" /></td> <td> <input type="text" name="title<%=count %>" size="25" value="<%=rs.getString("title")%>" /></td> <td> <input type="text" name="price<%=count %>" size="5" value="<%=rs.getString("price")%>" />円</td> <td> <select name="publish<%=count %>"> <% for(String pub : pubs){ <option value="<%=pub %>" <% if(pub.equals(rs.getString("publish"))){ out.print("selected='seleced'"); } %>><%=pub %></option> <% } %> </select></td> <td> <input type="text" name="published<%=count %>" size="12" value="<%=dformat.format(rs.getDate("published")) %>" /></td> </tr> <% count++; } rs.close(); ps.close(); db.close(); %> </table> <input type="hidden" name="count" value="<%=count %>" /> </form> %> このファイルは正しく動作し、データベースからデータが取得できます。削除したいレコードにチェックを入れてボタンを押すとデータが削除され正しく動作しますが、タイトルや価格を変更してもレコードの更新がおこなわれません。 受け取り側のファイルの内容です。 「ファイル名p_update2.jsp」 <% request.setCharacterEncoding("Windows-31J"); InitialContext context = new InitialContext(); DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/Jsp10"); Connection db = ds.getConnection(); db.setAutoCommit(false); PreparedStatement up = db.prepareStatement("UPDATE book SET title=?, price=?, publish=?, published=? WHERE isbn=?"); PreparedStatement del = db.prepareStatement("DELETE FROM book WHERE isbn=?"); int count = Integer.parseInt(request.getParameter("count")); for(int i=1;i<count;i++){ if(request.getParameter("delete" + i)==null){ up.setString(1, request.getParameter("title" + i)); up.setString(2, request.getParameter("price" + i)); up.setString(3, request.getParameter("publish" + i)); up.setString(4, request.getParameter("published" + i)); up.setString(5, request.getParameter("isbn" + i)); up.executeUpdate(); }else{ del.setString(1, request.getParameter("isbn" + i)); del.executeUpdate(); } } up.close(); del.close(); db.commit(); db.close(); response.sendRedirect("p_update1.jsp"); %> 試しにifブロック内でout.println(request.getParameter("title")+i)をh1タグ内に記述して実行すると、タイトル名がきちんと表示されるので、とりあえずifブロック内に処理が移っていて、フォームから送信された情報は取得できているようです。 次にフォームから送信された情報ではなく、以下を実行してみると、きちんとデータベースが更新されます。 up.setString(1, "PHPライブラリコレクション"); up.setString(2, "2500"); up.setString(3, "翔泳社"); up.setString(4, "2000-04-04"); up.setString(5, "978-4-7980-1616-0"); up.executeUpdate(); 各ソフトウェアのバージョン等 apache tomcat 6.0 jdbcドライバ mysql-connector-java-5.1.10-bin.jar MYSQL 5.0.87 java JDK 1.6.0_13 eclipse 3.5 です。 何が問題か未だ解決できず、1週間がたってしまいました。ご教授お願いいたします。

    • ベストアンサー
    • Java
  • taglibが見つかれません。。と。。(jsp)

    お疲れ様です。 jspページの ユーザ数 : <s:property value="userCount" />人 <br /><br /> の部分に 「's'に対するtaglibディクティブが存在しないかTLDファイルが見つかりません。」とエラーがでます。 他のs:property部分は全部エラーがでます。 ソースは下記の通りです。 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="Windows-31J"%> <%@taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>List User</title> </head> <body> ユーザ一覧<br /><br /> <!-- ListUserAction.getUserCount()が呼び出される。 --> ユーザ数 : <s:property value="userCount" />人 <br /><br /> <table border="1"> <tr> <th>ID</th> <th>指名</th> <th>出身地</th> </tr> <!-- ListUserAction.getUserlist()が呼び出され全データを繰り返しループ。--> <!-- その後、それぞれのループ毎に以下のメソッドが呼ばれる。 --> <!--  ListUserAction.getUserlist().getId()      --> <!--  ListUserAction.getUserlist().getName()     --> <!--  ListUserAction.getUserlist().getPref()     --> <s:iterator value="userlist"> <tr> <td><s:property value="id" /></td> <td><s:property value="name" /></td> <td><s:property value="pref" /></td> </tr> </s:iterator> </table> </body> </html> フレームワークはstruts2.0を使っています。 どうやったら解消できましょうか。 お答え宜しくお願い致します。

    • ベストアンサー
    • Java

専門家に質問してみよう