- - PR -
JSPでupdate文がうまくいかない
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-08-07 08:49
こんにちわ。うまくいかないので教えてください。
Apache1.3.31+Tomcat4.1.30+MySQL4.0.20d、mysql-connector-java-3.0.14.jar の構成で、dbデータのカウンタみたいなものをJSPで用意しています。 一度 select で取得して カウンタを更新して updateという作業を行うのですが 環境をLinux→Windowsに置き換えたとたん、動いていたJSPの なぜか update文の 部分が通らず困っております。 ResultSet rs = stmt.executeQuery(sqlstr); while(rs.next()){ stsCounter=rs.getInt("sts"); } stsCounter++; sqlstr="update dat set sts='"+stsCounter+"' where id='"+logID+"'"; rs = stmt.executeQuery(sqlstr); という具合です。ここで出来上がるsqlstr文をコマンドプロンプトでmysqlに 直接渡すと問題なく通りますし、<%=sqlstr%>で内容をページ表示させても 変数の値は問題なく表示されることも判っています。 tomcat上のエラー内容は、HTTP Status 500 - type Exception report description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: Can not issue data manipulation statements with executeQuery() at org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:254) : : : という具合です。 ぜひとも、お助けください |
|
投稿日時: 2004-08-07 10:41
同じstmtに対して異なる内容のexecuteQueryを行っているからではないでしょうか?
一度stmtを閉じて、新たなStatementを作成して、そこで2番目のSQLを発行すると どうでしょうか? (stmtだけでなく rs も閉じた方が良さそうです。) |
|
投稿日時: 2004-08-07 11:07
お答えありがとうございます。
結果、conも閉じてみましたが、同じ結果でダメでした。 sqlの内容をupdateからselectにするとエラー無く通ります。 (もちろん、dbの更新はできませんが) このことから、MySQL側の問題ではないかと、今connector.jarファイルを 取り替えたりMySQLを入れなおしたりしたのですが、変わりません。 jdbcは、localhostにuseUnicode=true&characterEncoding=SJIS&maxRows=0 で指定しているのですが、このあたりがいけないのでしょうか? |
|
投稿日時: 2004-08-07 11:17
executeQuery → executeUpdate では??
|
|
投稿日時: 2004-08-07 11:45
お答えありがとうございます。
rs = stmt.executeUpdate (sqlstr); に変更したところ、 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません JSPファイル: /download.jsp の中の行: 10でエラーが発生しました 生成されたサーブレットのエラーです: [javac] Compiling 1 source file D:\tomcat4\work\Standalone\localhost\_\download_jsp.java:111: 互換性のない型 出現: int 要求: java.sql.ResultSet rs = stmt.executeUpdate (sqlstr); ^ となってしまいました。う〜ん。。。 |
|
投稿日時: 2004-08-07 11:50
お疲れ様です。
Updateはクエリー結果を返さないので(正確な解釈ではありませんが・・・) sqlstr="update dat set sts='"+stsCounter+"' where id='"+logID+"'"; stmt.executeUpdate(sqlstr); でよろしいかと思われます。 |
|
投稿日時: 2004-08-07 19:26
なるほど、気がつきませんでした。
で、その通りやりましたら、無事エラーがでないで使えるようになりました。 ありがとうございます。 1週間ぐらい悩んでいて、悩んでいました。 ここに書き込んで良かったです。 本当にありがとうございます。 |
1
