JSPで複数テーブルのSQL実行後に値を送る方法とは?

このQ&Aのポイント
  • JSPで複数テーブルのSQLを実行した後、値を送る方法について教えてください。
  • JSPでUNION ALLを使用してSQLを実行し、テーブルの「番号」と「テーブル名」を送信したいですが、どのように記述すればいいのか分かりません。
  • また、番号はオートナンバーで1から順に振られています。
回答を見る
  • ベストアンサー

JSPで複数テーブルのSQL実行後に値を送る方法を教えて下さい!

いつもお世話になっております。 JSPにてUNION ALLを使用してSQLを実行します。 (ソースは必要部分のみ記載致します) SQL実行後にテーブルのカラムにある「番号」と「テーブル名」を <FORM method="post" action="Next_View.jsp?table=????"> <input type="hidden" name="num" value="<%= rs.getString("番号")%>"> の部分で送りたいのですがどの様に記述すればいいのか調べてみましたが 分かりませんでした。 説明が分かりにくいかもしれませんがどうかご教示下さいませ。 ちなみに番号はT_2005・T_2006・T_2007 共に1から順にオートナンバーで振られています。 String str = request.getParameter("Num"); rs = stmt.executeQuery ("SELECT * FROM T_2005 where ID='"+ str +"' union all SELECT * FROM T_2006 where ID='"+ str +"' union all SELECT * FROM T_2007 where ID='"+ str +"'"); while (rs.next()){ String year = rs.getString("年齢"); String number = rs.getString("電話番号"); String add = rs.getString("住所"); %> <TR> <FORM method="post" action="Next_View.jsp?table=????"> <input type="hidden" name="num" value="<%= rs.getString("番号")%>"> <TD><%= year %></TD> <TD><%= number %></TD> <TD><%= add %></TD> <%-- 詳細ボタンを表示 --%> <input type="submit" value="詳細"> </form> </TD> </TR>

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

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

  • ベストアンサー
  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

JAVA上の制限より、SQLパーサの制限が先ですね。 DBによりますが、oracleなら32767バイトまでです。 ただ、そんなSQL文をJSPにべたべた書くか? というのは疑問ではあります。 そこまでこったことをするのなら、JSPだけじゃなく、外部ライブラリを呼ぶ形で結果をもらった方がいいかもしれませんね。

earlgyreprince
質問者

お礼

ありがとうございます! >ただ、そんなSQL文をJSPにべたべた書くか? おっしゃるとおりかと思います。。。 タグライブラリとか探してみます☆ 本当に参考になりました! ありがとうございました♪

その他の回答 (1)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

> 説明が分かりにくいかもしれませんが うん。。。全然わからない。 <% %>で囲まれた部分はサーバ側で動作するもので、通常タグはクライアント側にフォワードされるものだから、渡すという言葉の意味が理解できないです。 <form>タグはたくさんできてしまっていいということですか? while(rs.next())の結果は複数あるので、formがたくさんできちゃいますが、いいのでしょうか。 それなら、SELECTで"*"を使わずに、実際の必要なカラム名を指定するように、 ("SELECT 'T_2005' as tname, seq, year, number, add FROM T_2005 where ID='"+ str +"' union all SELECT 'T_2006' as tname, seq, year, number, add FROM T_2006 where ID='"+ str +"' union all SELECT 'T_2007' as tname, seq, year, number, add FROM T_2007 where ID='"+ str +"'"); とでもして、<%=rs.getString("tname")%> でテーブル名が、帰ってくるからそれをつかえばよいのでは? ※DBが書かれていないので方言があるかもしれませんが。

earlgyreprince
質問者

補足

やっぱり分かりませんでしたか・・・ すみません。。。 クライアント側にフォワードされると言う言い方をすればよかったですね。 知識が未熟で言葉が思いつきませんでした。 formはたくさんできちゃってもいいです! >("SELECT 'T_2005' as tname, seq, year, number, add FROM T_2005 where ID='"+ str +"' union all SELECT 'T_2006' as tname, seq, year, number, add FROM T_2006 where ID='"+ str +"' union all SELECT 'T_2007' as tname, seq, year, number, add FROM T_2007 where ID='"+ str +"'"); この様なやり方があるんですね?なるほど! テーブルは例で書いたのですが本当はDB1つにつき50カラム程あります。 長いSQLでも特に問題のないものなのでしょうか?? たびたび申し訳ございません。

関連するQ&A

  • JSPで複数のSQL実行について教えて下さい

    JSPで複数のSQLを実行したいと思い、作ってみましたがページが全く表示されません。 SQL分が違う気がするのですがどこが悪いのか分りません。 ご教示下さいませ。ソースのせます。 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <HTML> <HEAD> <TITLE>結果</TITLE></HEAD> <BODY> <CENTER> <B>結果</B> <TABLE border="3"> <TR> <TD>年齢</TD> <TD>氏名</TD> </TR> <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver:ServerName;DatabaseName=Name","ID","PW"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); if (request.getParameter("buttonA") != null) { // テキストボックスの値を取得 String paramA = request.getParameter("NamA"); // SQL()を実行して、結果を得る rs = stmt.executeQuery("SELECT * FROM TABLE_A where 年齢='"+ paramA +"'"); rs = stmt.executeQuery("SELECT * FROM TABLE_B where 年齢='"+ paramA +"'"); } if (request.getParameter("buttonB") != null) { // テキストボックスの値を取得 String param = request.getParameter("NamB"); // getParameterの値を文字列へ変換 String paramB = new String(param.getBytes("ISO-8859-1"),"Shift_JIS"); rs = stmt.executeQuery("SELECT * FROM TABLE_A where 氏名 like '%"+ paramB +"%'"); rs = stmt.executeQuery("SELECT * FROM TABLE_B where 氏名 like '%"+ paramB +"%'"); } // 得られた結果をレコードごとに表示 while (rs.next()){ String year = rs.getString("年齢"); String name = rs.getString("氏名"); %> <TR> <FORM method="post" action="Next.jsp"> <TD><%= year %></TD> <TD><%= name %></TD> </form> </TD> </TR> <% } } catch (Exception e) { e.printStackTrace(); // エラー表示プログラム out.write(e.getMessage()); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • Java
  • SQLの実行がされない

    WINXP PRO  TOMCAT4.1.24 j2sdk1.4.1_06 です。 DBはMySqlを使って 以下のコードで接続し、 現在より後の日付のもの出力したいので SELECT * FROM kaigi_reservation WHERE utildate >= sysdate() ORDER BY reserveid ASC というSQLにしましたが、これが全く機能しません。 (抽出されずにそのまま全行出力される) MySql上で直接出力するとほしい結果が得られるのですが。 要領をえなくて申し訳ないのですが 良いアドバイスありましたらお願いします。 ResourceBundle bundle = ResourceBundle.getBundle("../mysqlresource"); String url = bundle.getString("URL"); String driver = bundle.getString("Driver"); Class.forName(driver); Connection dbconnect = DriverManager.getConnection(url); Statement stmt = dbconnect.createStatement(); String query = "SELECT * FROM kaigi_reservation WHERE utildate >= sysdate() ORDER BY reserveid ASC "; ResultSet rs = stmt.executeQuery(query); while(rs.next()){ ReserveInfo info = new ReserveInfo(); info.reserveId = rs.getInt("reserveid"); info.utilDate = rs.getString("utildate"); info.beginTime = rs.getString("beginingtime"); info.endTime = rs.getString("endingtime"); info.conference = rs.getString("conference"); info.name = rs.getString("name"); info.object = rs.getString("object"); result.add(info); } rs.close(); stmt.close(); dbconnect.close();

    • ベストアンサー
    • 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
  • 複数の値を1つのフォームで受ける効率的な方法

    1つのフォームに氏名・年齢・電話番号の3つの項目があり、それぞれ 検索用のテキストボックスと検索ボタンが配置されています。 氏名のテキストボックスと検索ボタンを"A" 年齢のテキストボックスと検索ボタンを"B" 電話番号のテキストボックスと検索ボタンを"C"として 検索キーを入力して検索ボタンを押下して次のフォームに移ります。 その受けるフォームを現在、作成しているのですが 受け取った値がAであれば氏名で、Bであれば年齢で、Cであれば電話番号で それぞれSQLにてデータベースのテーブルより検索して表示させるフォームを作りたいのですが 受け取った値がいずれの値なのかを判断して表示させる方法が思いつきません。 また、検索するテーブルも5つあります。 効率のいい記述をご教示願います。 ASPの時は以下の記述をしておりました。 長いのでRS1だけまで表記しました。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <%@ LANGUAGE="VBScript" %> <HTML> <HEAD> <TITLE>検索結果一覧</TITLE> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> </HEAD> <CENTER> <% If Request.Form("年齢") <> "" Then sqldata1 = "select * from テーブル1 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata2 = "select * from テーブル2 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata3 = "select * from テーブル3 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata4 = "select * from テーブル4 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" sqldata5 = "select * from テーブル5 where 年齢='" & Request.Form("年齢") & "' order by ファイル日付 desc" End If Dim Conn,SQL1,RS1,SQL2,RS2,SQL3,RS3 Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionTimeout = 5000 'Conn.open "driver={SQLServer};Server=raichou;UID=ID;PWD=PW;Database=NAME" Conn.open "NAME","ID","PW" SQL1 = sqldata1 Set RS1 = Server.CreateObject("ADODB.Recordset") RS1.Open SQL1, Conn,3,3 %> <span style="font-size:24pt;color:#ff0033"><B>検索結果一覧</B></span> <TABLE border="3" BORDERCOLOR="#9999ff" cellspacing="1" cellpadding="1"> <TR> <TD><span style="font-size:10pt;color:#993333">氏名</span></TD> <TD><span style="font-size:10pt;color:#993333">電話番号</span></TD> <TD><span style="font-size:10pt;color:#993333">年齢</span></TD> </TR> <% Do while Not RS1.EOF %> <TR> <TD><span style="font-size:10pt;color:#000000"><%=RS1("氏名")%></span></TD> <TD><span style="font-size:10pt;color:#000000"><%=RS1("電話番号")%></span></TD> <TD><span style="font-size:10pt;color:#000000"><%=RS1("年齢")%></span></TD> <TD align="center"> <FORM action="view.asp?table=テーブル1" method="post"> <input type="hidden" name="id" value="<%=RS1("ID")%>"> <input type="submit" value="詳細"> </form> </TD> </TR> <% RS1.MoveNext Loop RS1.close Set RS1=Nothing Conn.close Set Conn=Nothing %> </TABLE> <BR> <INPUT TYPE="button" value="戻る" onClick="javascript:history.back();"> </CENTER> </BODY> </HTML>

    • ベストアンサー
    • Java
  • JSPのIF文を教えて下さい

    こんばんわ。 JSPにてIF文を使ったDBテーブル表示のWEBを作成したのですが クローズの行でエラーが表示されてしまいます。 エラー内容は「型の開始が不正」ですというものです。 知識不足で恐縮ですがご教示願います。 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <HTML> <HEAD> <TITLE>一覧</TITLE></HEAD> <CENTER> <B>一覧</B> <TABLE border="3" BORDERCOLOR="#9999ff"> <TR> <TD>年齢</TD> <TD>電話番号</TD> </TR> String year = request.getParameter("年齢"); String namber = request.getParameter("電話番号"); <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver://sqlserverName;DatabaseName=NAME","ID","PW"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); if(year.length() >= 0){ %> // SQL()を実行して、結果を得る rs = stmt.executeQuery("SELECT * FROM テーブルA where 年齢='"+ paramA +"'"); rs = stmt.executeQuery("SELECT * FROM テーブルB where 年齢='"+ paramA +"'"); <% } else if(namber.length() >= 0){ %> rs = stmt.executeQuery("SELECT * FROM テーブルA where 電話番号='"+ paramC +"'"); rs = stmt.executeQuery("SELECT * FROM テーブルB where 電話番号='"+ paramC +"'"); <% } %> // 得られた結果をレコードごとに表示 while (rs.next()){ String aa = rs.getString("名前"); String bb = rs.getString("住所"); %> <TR bgcolor="#ccffcc"> <FORM method="post" action="Next.jsp"> <input type="hidden" name="num" value="<%= rs.getString("ID")%>"> <%-- 年齢フィールドの表示 --%> <TD><%= aa %></TD> <%-- 電話番号フィールドの表示 --%> <TD><%= bb %></TD> <TD align="center"> </form> </TD> </TR> <% } } catch (Exception e) { e.printStackTrace(); // エラー表示プログラム out.write(e.getMessage()); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • Java
  • jsp、サーブレットの質問です。

    Tomcatを使用してjspとサーブレットを使い掲示板のような投稿サイトもどきを作成していますが解決できない部分があります。 ↓は表示用のjspです♪ <html> <head> <title>Insert title here</title> </head> <body> <% String lsts = (String)request.getAttribute("lst"); %> <table border="4"> <tr> <td>日時</td> <td>タイトル</td> <td>スレッド主</td> <td></td> </tr> <tr> <td><%for(int i = 0; i<lsts.length(); i++){ out.println(lsts); } %> </td> <td><%out.println(); %></td> <td><%out.println("");%></td> <td> </td> </tr> </table> </form> </body> </html> こちらがサーブレットです otected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*DB接続処理は省略します*/ try{ ps = (PreparedStatement) con.prepareStatement(sql); String sql = "select * from thred"; ResultSet rs = ps.executeQuery(); //テーブル内一覧取得 while(rs.next()){ rs.getString("time"); rs.getString("title"); rs.getString("id"); rs.getString("thredid"); String s = (rs.getString("time")+","+ rs.getString("title")+","+rs.getString("id")); String[] lsts = s.split(","); List<String> thlists = Arrays.asList(lsts); String ss = (thlists.get(0)); request.setAttribute("thlst",ss); RequestDispatcher dispatcher= request.getRequestDispatcher("/list.jsp"); dispatcher.forward(request,response); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); }finally{ try { con.close(); } } } jspの方にサーブレットでthredDBから抜き取ったtimeとtitleとidを全て表示させたいのですが 現状だと 2014-06-03 06:45:02  aaaa 1 の行だけがたくさん表示されてしまいます 恐らくスコープを取得した時点でこの↑の1行のものしかとれてこれていないのだと思います... どのように処理を行ったらよいのでしょうか? DBの中身は画像添付いたしますっ

  • JSPでDBからデータ読み込みブラウザーで10件ずつ表示させたい。

    JSPでDBからデータを表示させる事ができました、これをブラウザーで10件ずつ表示させ、次へ→、←戻る又はページ数表示で移動させたいのですが、PHPとかでは あったのですがJAVA初心者にはわかりません。 誰か教えてください、お願いします。 <%@page import="java.sql.*,MyDatabase.MyDBAccess" contentType="text/html;charset=Shift_JIS"%> <% String sel=request.getParameter("sel"); sel=new String(sel.getBytes("8859_1"),"Shift_JIS");//selectしたカテゴリーname MyDBAccess db =new MyDBAccess(); db.open(); //String str; //str=sel; ResultSet rs = db.getResultSet("select * from "+sel+""); String tableHTML ="<table border=1>"; tableHTML +="<tr bgcolor=\"#ff9933\">" +"<td><font color=\"white\">商品ID</font></td>" +"<td><font color=\"white\">画像</font></td>" +"<td><font color=\"white\">商品名</font></td>" +"<td><font color=\"white\">数量</font></td>" +"<td><font color=\"white\">タイトル</font></td>" +"<td><font color=\"white\">価格</font></td>" +"<td><font color=\"white\">説明</font></td>"; int n=0; while(rs.next()){ //int id=rs.getInt("id"); String id=rs.getString("id"); String name=rs.getString("name"); String sum=rs.getString("sum"); String price=rs.getString("price"); String title=rs.getString("title"); String detail=rs.getString("detail"); String ima=rs.getString("imagelink"); //ima=new String(ima.getBytes("8859_1"),"Shift_JIS"); String imag=("../image/"+ima); tableHTML +="<tr><td align=\"right\">"+id+"</td>" +"<td><img src="+imag+" whdth=\"120\" height=\"60\"></td>" +"<td>"+name+"</td>" +"<td>"+sum+"</td>" +"<td>"+title+"</td>" +"<td>"+price+"</td>" +"<td>"+detail+"</td></tr>"; n++; } tableHTML +="</table>"; db.close(); %> <html> <head> <title>商品在庫情報</title> </head> <body> <h1><%= sel %>の在庫一覧</h1> <%=tableHTML %> </body> </html>

  • JSPのループについて・・・

    JSPのループで以下以下のように設定してます。 string ruikeisql3="SELECT SITENKODO,HIDUKE,URIAGE,RIEKI,TOJITU FROM SABISU WHERE SITENKODO='"+no+"'AND YEAR(HIDUKE)="+nen+"AND MONTH(HIDUKE)="+tuki+"order by HIDUKE"; ResultSet RS2=st1.executeQuery(ruikeisql3); RS2.next(); String hiduke=RS2.getString("hiduke"); for(int i=1;i<32;i++){ out.print(i+","); out.print(RS2.getString("uriage")+","); out.print(RS2.getString("rieki")+","); out.print(RS2.getString("toujitu")+","); out.print(RS2.getString("\r"); if(rs2.next()){ 以下省略 実行すると1~31日までの実績が表示されるのですが、1日ごとに一度ループを終わらせて別の計算式を入れたいのですがどのようにしたら良いのか・・・・ お手数ですが宜しくお願いし致します。

  • 検索結果受け渡し

    今、MVCで、検索ページを作っています。 そこで、検索結果のデータをうまくjsp に渡せなくて困っています。 検索結果が、1件の場合は、 /*SampleBean.java*/ while(resulteset.next()){ String name = resulteset.getString("name"); String sei = resulteset.getString("last"); } public String getName(){return(name)}; public String getSei(){return(sei)}; などとした時に、 jsp では、 <table border="1"> <tr><td>名前</td>   <td>姓</td> </tr> <tr><td><jsp:getProperty name="SampleBean" property="Name"/> </td> <td>jsp:getProperty name="SampleBean" property="Sei"/> </td> </tr> とすると、jsp で結果取得できますが、 では、 *SampleBean.java*/ while(resulteset.next()){ String name = resulteset.getString("name"); String sei = resulteset.getString("last"); } での結果が複数ある場合には、どうのような処理を施したら 良いのでしょうか? 何分、略したコードですが、ご教授よろしくお願いします。  

    • ベストアンサー
    • Java
  • JSPのIF構文教えて下さい!

    こんにちわ。 現在、ログイン認証でPWによって次に表示するJSPを作りたいのですが、お恥ずかしい事にIF構文を差し込む所が分かりません。。。 <FORM method="post" action="view.jsp">と<FORM method="post" action="viewx.jsp">で分けるイメージです。 自分でもやってみましたが処理が分岐しません。 勉強不足ですみませんがお知恵をお貸し下さい!お願い致します。 <%@page contentType="text/html; charset=Windows-31J"%> <%@page import="java.sql.*"%> <%! // サーブレットのinitメソッドに相当 public void jspInit() { try { // JDBCドライバをロード Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (Exception e) { e.printStackTrace(); } } %> <html> <head> <title>検索結果一覧</title></head> <BODY bgcolor="#ffffcc"> <CENTER> <span style="font-size:24pt;color:#cc99cc"><B>検索結果一覧</B></span> <CENTER><%=request.getParameter("str")%></br> <br><br> <TABLE border="3" BORDERCOLOR="#9999ff" cellspacing="1" cellpadding="1"> <TR> <TD><span style="font-size:11pt;color:#336000">F1</span></TD> <TD><span style="font-size:11pt;color:#336000">F2</span></TD> <TD><span style="font-size:11pt;color:#336000">F3</span></TD> </TR> <% // データベースへのアクセス開始 Connection con = null; Statement stmt = null; ResultSet rs = null; try { // データベースに接続するConnectionオブジェクトの取得 con = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Name","ID","pw"); // データベース操作を行うためのStatementオブジェクトの取得 stmt = con.createStatement(); String param = (request.getParameter("param")); String pass = (request.getParameter("password")); // SQL()を実行して、結果を得る rs = stmt.executeQuery ("SELECT * FROM table where 番号='"+ param +"'"); // 得られた結果をレコードごとに表示 while (rs.next()){ %> <FORM method="post" action="view.jsp"> <input type="hidden" name="num" value="<%= rs.getString("id")%>"> <tr> <%-- レコードの区分フィールドはNull --%> <td></td> <%-- レコードのF1フィールドを表示 --%> <td><%= rs.getString("F1")%></td> <%-- レコードのF2フィールドを表示 --%> <td><%= rs.getString("F2")%></td> <%-- 詳細ボタンを表示 --%> <td><input type="submit" value="詳細表示"></td> </tr> </form> <% } } catch (Exception e) { e.printStackTrace(); // エラー表示プログラム out.write(e.getMessage()); } finally { // データベースとの接続をクローズ try { rs.close(); } catch (Exception e) {} try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} } %> </table> <br></br> <center> <INPUT TYPE="button" NAME="btn3" value="戻る" onClick="JavaScript:history.back()"> </body> </html>

    • ベストアンサー
    • Java

専門家に質問してみよう