- - PR -
原因不明の動作不良か発生!!
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-11-22 19:45
現在 自宅のwebサーバに商品販売及び買い物カゴを作成中でございますが、以下の動作不良が発生しましたので、皆様のお知恵を拝借させて頂きたく筆をとりました。
稚拙なコードで大変申し訳ございませんが以下の通りを記述しました。 ServletContext context=getServletConfig().getServletContext(); String handlename=(String)(context.getAttribute("handlename")); System.out.println(" handlename "+handlename); String name=(String)(context.getAttribute("IDname")); System.out.println("name "+name); int itemShurui=Integer.parseInt((String)(context.getAttribute("ItemShurui"))); System.out.println("itemShurui "+itemShurui); for(int k=0;k<itemShurui; k++) { //cartサーブレットweedを取得する String weed=(String)(context.getAttribute("weed"+Integer.toString(k))); String t=(String)(context.getAttribute("count"+Integer.toString(k))); System.out.println("t "+t); int n=Integer.parseInt(t); StringTokenizer st=new StringTokenizer(weed,"#"); String shouhinIndex=st.nextToken(); System.out.println("shouhinIndex "+shouhinIndex); String shouhinNumber=st.nextToken(); System.out.println("shouhinNumber "+shouhinNumber); String shouhinName=st.nextToken(); System.out.println("shouhinName "+shouhinName); String price=st.nextToken(); long price_util=Integer.parseInt(price); long sum=price_util*n; //SQL文1を実行する String sqlQuery1="SELECT * FROM scratch where handlename=\'"+handlename+"\'"; System.out.println(sqlQuery1); ResultSet resultset1 = statement.executeQuery( sqlQuery1); System.out.println(resultset1); String address=null; String telNumber=null; String EmailAddress=null; while( resultset1.next()){ address=resultset1.getString("address"); System.out.println("address "+address); telNumber=resultset1.getString("tel"); System.out.println("telNumber "+telNumber); EmailAddress=resultset1.getString("EmailAddress"); System.out.println("EmailAddress"+EmailAddress); //SQL文2を実行する String sqlQuery2= "INSERT INTO scratchShouhin Values ('"+name+"','"+handlename+"','"+address+"','"+telNumber+"','"+EmailAddress+"','"+shouhinName+"',"+price_util+","+n+","+sum+")"; System.out.println("sqlQuery2 "+sqlQuery2); ResultSet resultset2= statement.executeQuery( sqlQuery2 ); System.out.println(resultset2); 見積書のデータをweedという商品別の一塊のデータとして取得して、また別途用意してある別途データをハンドルネームをキーとして取得、2つのデータを商品発注用のデータベースとして追加書き込みするものです。 本来であれば商品数に応じてデータベースに書き込みされるハズですが最初のループの最後まで終わったで処理が止まってしまいます。 コンソール出力としては shouhinIndex 0 shouhinNumber B0610001 shouhinName タタミベッドBO6シングル SELECT * FROM scratch where handlename='goronyan' sun.jdbc.odbc.JdbcOdbcResultSet@1875da7 address 省略 telNumber 省略 EmailAddres 省略 sqlQuery2 INSERT INTO scratchShouhin Values ( 省略) 本来ならここから2廻り目のループの処理となるはずですがこれ以上処理されません。 こんな基本的な質問をするのは大変申し訳ございませんが宜しくお願い申し上げます。 [ メッセージ編集済み 編集者: jokers 編集日時 2003-11-22 19:44 ] |
|
投稿日時: 2003-11-22 21:47
DML文はexecuteQueryでは実行しません。
_________________ _/_/_/ _/うちの会社の変なところ〜 _/1条.毎年300人新卒採用 _/2条.大事な事項(就業規則等)の変更発表は、施行前日 _/(以下略) |
|
投稿日時: 2003-11-23 22:08
切り分けのためにコードをもっとシンプルにしてみてはいかがでしょうか?
まずやりたいこと全部実装しなくてもいいですから。 その方が第三者もコードを見る気にもなれますよ。 標準出力は "shouhinIndex 0" から始まっているのですか?ループ回数のキーとなる itemshurui はどうなっているんでしょうか? また、「商品数に応じてデータベースに書き込みされるハズ」とのことですが、商品数は固定なのでしょうか? コンテクストパラメータからループ回数を取得しているのであればループ回数は毎回同じになってしまうそうですが・・・ |
1
