• ベストアンサー

サーブレットでデータベースの件数を取得する方法がわからなくて困っています

サーブレットでデータベースの件数を取得する方法がわからなくて困っています。 dborder_tranテーブルの DB_ordernumber フィールドの件数を取得したいです。 以下の方法では COUNTというフィールドはないので取得できないです。 しかし、while(rs.next()) にカウンタを付けて取得するのも効率が悪いように思います。 何か良い方法はありませんか? qry = "SELECT COUNT(*) FROM dborder_tran"; rs = st.executeQuery(qry); Integer ordernumber = Integer.valueOf((rs.getInt("DB_ordernumber") + 1));

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

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

  • ベストアンサー
  • tenten72
  • ベストアンサー率29% (8/27)
回答No.1

初めまして。 qry = "SELECT COUNT(*) AS DB_ordernumber FROM dborder_tran"; rs = st.executeQuery(qry); Integer ordernumber = Integer.valueOf((rs.getInt("DB_ordernumber") + 1)); とすれば取得できると思います。(未検証ですが。。。)

pochi1234
質問者

お礼

できました。ASで別名をつければいいんですね。 ありがとうございました。 qry = "SELECT COUNT(*) AS DB_ordernumber FROM dborder_tran"; rs = st.executeQuery(qry); rs.next(); String ordernumber = Integer.toString(rs.getInt("DB_ordernumber") + 1);

その他の回答 (1)

  • zionic
  • ベストアンサー率39% (31/79)
回答No.2

DB_ordernumberフィールドの件数=レコード件数と仮定して。 No.1さんのやり方でもできますが、SELECTでの取得項目が一つであれば無理に項目名で取得するのではなくて Integer ordernumber = Integer.valueOf((rs.getInt(1) + 1)); と、Select項目の列番号(順番)を指定するというのもありじゃないかなぁ、と。

pochi1234
質問者

お礼

今回は、ログイン時に注文番号を発行する処理なので、 データベースからレコード件数を取得して、それに+1する処理が必要でした。 qry = "SELECT COUNT(*) AS DB_ordernumber FROM dborder_tran"; rs = st.executeQuery(qry); rs.next(); String ordernumber = Integer.toString(rs.getInt("DB_ordernumber") + 1);

関連するQ&A

  • ResultSetインターフェイスでの next() の使い方

    データベースからSQLをつかって受注件数を取得したい時に、なぜ、下記のように next() をしなければいけないのかが分かりません。 初心者なので、出来ましたら詳しく教えてください。 お願いします。 int count = 0 ; Statement stmt = con.createStatement() ; String sql = "select count(*) from 受注" ; ResultSet res = stmt.executeQuery(sql) ; if (res.next()) { count = res.getInt(1) ; }

    • ベストアンサー
    • Java
  • requestについて困っています。

    下記のbooleanの結果を他のサーブレットで取得して、結果ごとに"mapping.findForward("")"の処理をしたいのですが、取得の仕方が分かりません。お願い致します。 <MemberDAO.java> ・・・ public boolean isEntriedMail(String member_mail) throws SQLException{ Connection con = ds.getConnection(); PreparedStatement stmt = con.prepareStatement(ISENTRIEDSQL); ResultSet rs = null; try{ stmt.setString(1,member_mail); rs = stmt.executeQuery(); if(rs.next()){ int count = rs.getInt(1); if(count == 0){ return false; } } }catch(SQLException ex){ return true; }finally{ if(rs != null){ rs.close(); } stmt.close(); con.close(); } return true; }

  • DBから取得した結果をtext内へ表示したいのですが。

    getuji表に列が「月、日、天気」と3つある場合に String qry1 = "SELECT * FROM getuji WHERE 月 = '4'"; ResultSet rs = st.executeQuery ( qry1 ); とgetuji表の月が4の行から「月、日、天気」データを取り出し、「text1に月、text2に日、text3に曜日」と取得したデータを表示させたいのですが、 DBから取得したデータをどうしたらテキスト内へ表示させることができるのかわかりません。 どなたかわかる方がいらっしゃいましたら教えていただけないでしょうか?

    • ベストアンサー
    • Java
  • Accessで日本語を使っていると実行時にエラーになる。

    Microsoft Accessでデータベースを作成した。そのデータベースを使って、JdbcOdbcDriverでMicrosoft Accessから 値を取得しようとするとテーブル名とフィールド名に日本語を使っているときに以下の部分でエラーになります。 テーブル名とフィールド名には日本語を使いたいのですがどのようにすればよいでしょうか? String sql = "SELECT * FROM 整理" ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ int no = rs.getInt("番号"); } テーブル名とフィールド名を英語にしたらエラーは消えました。

  • レコード件数の表示

    夜分失礼します。 上記内容について教えてください。 今JAVAを用いてレコード件数(200件)を表示させようとしています。 しかし、レコードセットの表示方法しか知らず、またレコード件数をPHPで表示させる方法くらいしか検索できませんでした。どこがいけないか指摘してください。 以下にコア部分を書きます。 // ドライバクラスをロード Class.forName("org.gjt.mm.mysql.Driver"); // データベースへ接続 String url = "jdbc:mysql://localhost:3306/db"; con = DriverManager.getConnection(url,"root","**********") stmt2 = con.createStatement(); strQuery2 = " select count(*) AS RecordNums from ********** "; ResultSet rs2 = stmt2.executeQuery( strQuery2 ); SumNo = rs2.getFetchSize(); どうしてもSumNo=0となってしまいます。

    • ベストアンサー
    • Java
  • 任意の件数の取得

    検索条件にマッチしたレコードのセットのうち、任意の件数、例えば1から100件、101から200件とか、取得する方法というのはありますか? DBはDB2です。 オラクルではあった気がするのですが、DB2は?と思っています。 もっと言うと、実装はHibernateを使用してアクセスしているので、Hibernateでそのような取得方法があるのならそれも教えていただきたいと思っています。 よろしくお願いします。 (ソートして連番ふるviewでも作ればいいのかな…などとも思っています。どうなんでしょ?)

  • アクセス ADO Null以外のレコードの件数を取得したい

    アクセス ADO Null以外のレコードの件数を取得したい テーブルにレコードが100行あり、そのうちNull値は40行あります。(主キーではないです) この時、ADOでNull以外にフィルタをかけたいのですが For i = 1 To RS.RecordCount RS.Filter = "フィールド = '*'" でも RS.Filter = "フィールド = 'Null''" でも、文字列になってしまい、うまくいきません。 RS.Filter = "フィールド " <> 'Null' だとエラーになります。 「<>null」を抽出する方法をご教授願います。

  • データベースから取得したデータを配列に格納できません。

    jTableにSQL文の結果を表示させようとして結果を以下のように配列に 格納しようとしました。 public String[][] Serch(){ int i=0; String[][] rowData; String str = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=helloTable.mdb"; try { // ドライバクラスをロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // データベースへ接続 Connection con = DriverManager.getConnection(str, "", ""); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); String sql = "SELECT * FROM ハローテーブル"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){ // NOを取得 String no = String.valueOf(rs.getInt("NO")); // 言語を取得 String lang = rs.getString("言語"); // メッセージを取得 String msg = rs.getString("メッセージ"); rowData[i][0] = no; rowData[i][1] = lang; rowData[i][2] = msg; i++; } stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } return rowData; } このメソッドで得た配列を表示させようとすると以下の結果が表示されます。 java.lang.NullPointerException 正常なSQL文の結果は以下の通りです。 1 日本語 こんにちは世界 2 英語 Hello World 3 ドイツ語 Hallo Welt 配列の行数はSQL文の結果の行数に合わせたかったのですがうまくいきません。 どのように直せばSQL文の結果を配列にすべて格納できるでしょうか?

    • ベストアンサー
    • Java
  • 複数のformから値を取得する方法

    AというASPには複数のformがあります。 DBの取得結果を表示しており、countには取得件数が入ってます。 また、件数分同じformがあり、判別はnameにて行っています。 検索件数<%=count %>件 <input type="button" value="一括修正" action="Update()"> <% Do Until rs.EOF %> <form method="POST" target="main" name="updatename<%=ii%>"> <input type="hidden" name="no" value="<%= rs.Fields.Item("NO").Value %>" … </form> … <% ii= ii+1 rs.MoveNext Loop%> 受け取り側のBというASPでは <form method="POST" name="update"> <%For i = 1 To count%> <input type="hidden" name="no<%=i%>" value="<%=Server.HTMLEncode(Request.Form("No" & i)) %>"> <%Next%> </form> のようにループにて送信側のデータを取得しています。 このAとBの間をjavascript(外部ファイル)にてやろうと思っています。 Javascript(データ受け渡し) function Update() { var Cnt for (Cnt=1; Cnt<count ; Cnt++){ // 件数分ループ var No(Cnt) = document.all.updatename(Cnt).no.value; document.update.no(Cnt).value=No(Cnt); } document.update.action = "B.asp"; document.update.target = "main"; document.update.submit(); } やりたい事は、Aというファイルにある複数のformから値を取得し、Bというファイルにある項目に設定する、という事なのですが、上手くいきません。 ・Aというページの件数をjavascriptで使用する方法 ・Aというページの複数formから値を取得する方法 document.allを使用すると上手くいく、とネットで検索してわかったのですが、いまいち使用方法がわからず、こまっています・・・。 どうか宜しくお願いします。

  • ブラウザ上でデータベースのテーブル表示について

    こんにちは。研修の問題についてなのですが・・・ postgresql+jsp+servlet でお聞きしたい事があります。 環境は(ちょっとわからないので)最新のものでお願いします。 まず、 servletからDBに接続、SQL文でテーブル内容全てを取得。 SQL文を実行してResultSetをこのままrequestにいれてjspへ送る。 jspでrequestを取得、next()、getIntなどでResultSetの中身を取得。 <%= %>でブラウザに表示する。 という形なのですが、テーブルの中身の最後の行 しか表示されないのです。 テーブル内は他にもいくらか行があります。 これはなぜなのでしょうか? ResultSetをそのまま送るとこの結果になるのでしょうか? servletでテーブル内を全て取得してから[(rs.next())、get~を使って。] jspに送ったほうがいいのでしょうか? またその場合は取得した値をそのままrequestに入れて送るものなのでしょうか? 聞いてばかりでお恥ずかしいですが ちょっと行きずまってます。宜しくお願いいたします。

    • ベストアンサー
    • Java

専門家に質問してみよう