- PR -

useBean、セッションを使ってDBにupdateしたいのですが書き方が分かりません。

1
投稿者投稿内容
パル
会議室デビュー日: 2007/03/31
投稿数: 5
投稿日時: 2007-03-31 15:15
学校からのお題でこのようなものが出されたのですが、
まったく分からず・・・・(×_×;)
いろんなサイトからコピペで貼り付けながらここまで来たのですが
そろそろ限界なのでどなたかご親切な方、教えて頂けませんか?
宜しくお願いします。
<お題>
1.jsp画面で以下をラジオボタンで選択させ、「次へ」をクリック
  ○野菜
  ○果物
  ○肉 
 「果物」が選択されれば、DBから果物の種類が呼び出されjspにて表示する。

2.jsp画面で表示された果物の一覧から
 好きな果物をいくつか選択させる(チェックボックス使用)「確認」ボタンをクリック。

3.選択した果物を確認する画面を表示
4.確認画面(3)で表示した果物でOKであれば、再びDBに接続しフラグを立てる。

DB Table情報
============
ID  名前    区分    flog(デフォルトは0、フラグが立てば1)
01 キャベツ   野菜     0
02 りんご    果物     0
03 鳥      肉      0
04 玉ねぎ    野菜     0
05 いちご    果物     0

※オペレーションは1回限りとする。


1.2.3.までは出来たのですが4をどのように作ればいいのかが分かりません。

■update.jsp(選択したものを確認する画面)・・・「作成済」
<%@ page
contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_jis" %>
<%@ page import="Nanase.*"%>
<%@ page import="java.util.*"%>
<%@page import="Beans.*" %>

<jsp:useBean id="array" scope="session" class="java.util.ArrayList"/>

<html>
<head>
<title>Update確認画面</title>
</head>
<body>
<form method=post action="UpdateServlet">

<%
request.setCharacterEncoding("Windows-31J");
%>

以下がUpdateされますがよろしいですか?<br><br>

<%

Iterator it = array.iterator();
int i = 0;
while(it.hasNext()){

%>
<tr>
<!--選択したものすべてを表示 -->
<td><%=it.next()%></td>
</tr>
<%
i++;
}
%>

<br>
</form>
<input type="submit" value="更新">
<form method=post action="UpdateresultServlet">
<input type="submit" value="戻る">
</form>


■updateresult.jsp(更新完了画面)・・・「作成済」

<%@ page
contentType="text/html; charset=Shift_JIS"
pageEncoding="Shift_jis" %>
<%@ page import="Nanase.*"%>
<%@ page import="java.util.*"%>
<%@page import="Beans.*" %>

<jsp:useBean id="array" scope="session" class="java.util.ArrayList"/>

<html>
<head>
<title>Update完了画面</title>
</head>
<body>
<form method=post action="UpdateresultServlet">

<%
request.setCharacterEncoding("Windows-31J");
%>

以下がUpdateされました。<br><br>

<%

Iterator it = array.iterator();
int i = 0;
while(it.hasNext()){

%>
<tr>
<!--選択したものすべてを表示 -->
<td><%=it.next()%></td>
</tr>
<%
i++;
}
%>

<br>
</form>
<form method=post action="Index">
<input type="submit" value="戻る">
</form>

DBに接続するクラスとサーブレットの中身をどのように書けば
いいのでしょうか??????

■UpdateBean.java よく分からずいろんなところからコピッてきました。
ココの書き方が分かりません・・(*.*~~

package nanase;

import java.sql.*;
import java.io.*;
import java.util.*;

public class UpdateBean{
public static ArrayList getColom(String name){

ArrayList alist = new ArrayList();
StringBuffer temp;

try{
Class.forName("org.postgresql.Driver");
Connection dbConn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "scott", "tiger");

String sqlstr ="UPDATE Table SET flog = '1'
+ "WHERE ID = 'it.next()'


Statement stmt = dbConn.createStatement();
ResultSet rs = stmt.executeQuery(sqlstr );

pstmt.close();
con.close();
}
catch (SQLException sqlEx){
sqlEx.printStackTrace();
}
catch (Exception ex){
ex.printStackTrace();
}
}
//SQL確認テスト用メソッド
public String getsql(){
return sqlupdate;
}
}

■DeleteresultServlet.java サーブレット 
ココの書き方が分かりません・・(*.*~~

package nanase;

import java.io.*;
import java.util.*;
import java.text.*;
import javax.servlet.*;
import javax.servlet.http.*;
import nanase.*;

public class UpdateresultServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doIt(request,response);
}

public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doIt(request,response);
}

public void doIt(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{

request.setCharacterEncoding("Windows-31J");

/* JavaBeansを呼ぶ */
HttpSession session = request.getSession();
UpdateBean dbupdate = new UpdateBean();



RequestDispatcher rd
= request.getRequestDispatcher("/updateresult.jsp");
rd.forward(request,response);

}
}




[ メッセージ編集済み 編集者: パル 編集日時 2007-03-31 15:29 ]



[ メッセージ編集済み 編集者: パル 編集日時 2007-03-31 17:34 ]

[ メッセージ編集済み 編集者: パル 編集日時 2007-03-31 17:41 ]
SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2007-03-31 16:25
「書き方わかりません」というのは、Javaのシンタックスがわからないのですか?SQLのシンタックスがわからないのですか?シンタックスはわかるがロジックがわからないのですか?

自分でやってみて上手くいかない部分を質問するならまだしも、わからないから教えて(代わりにやって)というのはちょっと。

発注していただければ特別値引きで請け負わせていただきますが(笑)

#勉強するための学校なんだから、教師に聞けばよいのでは?
パル
会議室デビュー日: 2007/03/31
投稿数: 5
投稿日時: 2007-03-31 17:06
SUK2様

度々すみません、ご迷惑を承知でお聞きしたいのですが・・・
SQL部分について教えて頂けませんか?

「updateresult.jsp」内で表示した
<%=it.next()%> ←こちらは、DBのTable情報にある「ID」にあたるものを
表示しているのですが 、こちらをsqlのWHEREの条件で表したいのです。
※表示したIDのすべてに対してflog = '1'を立てたいのですが・・・
こんな感じでいいのですか?

String sqlstr ="UPDATE Table SET flog = '1'
+ "WHERE ID = 'it.next()'


DB Table情報
============
ID  名前    区分    flog(デフォルトは0、フラグが立てば1)
01 キャベツ   野菜     0
02 りんご    果物     0
03 鳥      肉      0
04 玉ねぎ    野菜     0
05 いちご    果物     0



[ メッセージ編集済み 編集者: パル 編集日時 2007-03-31 17:28 ]
SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2007-04-02 11:16
引用:
※表示したIDのすべてに対してflog = '1'を立てたいのですが・・・
こんな感じでいいのですか?

実際にやってみましたか?
引用:
String sqlstr ="UPDATE Table SET flog = '1'
+ "WHERE ID = 'it.next()'

SQL以前にJavaのシンタックスから。
まず、一行目の文字列がダブルクオートで閉じられていないためコンパイルエラーになります。二行目も同様です。
ただし、it.next()をそのまま文字列内に書いても、それは文字列として処理されてしまうので
コード:
"UPDATE Table SET flog = '1'"
+ "WHERE ID = '" + it.next() + "'"; 

とする必要があります。
とりあえず上記の方法で動くかと思いますが、もう少しスマートにするのであればプリペアドステートメントで検索すると幸せになれるかもしれません。

#プリペアドステートメントは、次のステップですので、まずは現状の動作を理解しましょう。
#質問する時は、どの様な問題に対して、どの様な結果を希望し、どの様な事を試した時に
#どの様なエラーが発生したかを明記するようにしたほうが良いです。
#あと、環境も書きましょう。
taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2007-04-02 11:35
引用:

パルさんの書き込み (2007-03-31 15:15) より:
3.選択した果物を確認する画面を表示
4.確認画面(3)で表示した果物でOKであれば、再びDBに接続しフラグを立てる。


 4番の確認画面には「OK」と「戻る」のボタンが必要では?
説明されていないだけであるなら問題ありませんが。
パル
会議室デビュー日: 2007/03/31
投稿数: 5
投稿日時: 2007-04-02 22:30
SUK2様 taku様

===================================================-
SUK2様

ご返答ありがとうございました!

"UPDATE Table SET flog = '1'"
+ "WHERE ID = '" + it.next() + "'";

こちらを使って実際試しましたところ
うまくupdate する事ができました。


引用:
--------------------------------------------------------------------------------
#質問する時は、どの様な問題に対して、どの様な結果を希望し、どの様な事を試した時に
#どの様なエラーが発生したかを明記するようにしたほうが良いです。
#あと、環境も書きましょう。

m(。`。)m
そうですよね。。
今回初めて投稿させて頂き、ご丁寧にご対応頂きながら
こちらは失礼ばかりで・・本当に申し訳ございません。
何とお詫びしたらいいのか。。
もう少しお勉強を重ねて今度はいい形で質問が出来るよう頑張りますので
またよろしくお願いします<(_ _)>

本当にありがとうございました!!


=====================================================
taku様

今回のお題では特には大丈夫です。
ご丁寧にご回答ありがとうございました!!



[ メッセージ編集済み 編集者: パル 編集日時 2007-04-02 22:35 ]
1

スキルアップ/キャリアアップ(JOB@IT)