竹形誠司 ブログ
ご質問    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
JSPとJDBCでのトラブル
by ミニミニ[mini98]
トラブル発生です・・・解決法を宜しくお願いしますm(_ _)m

「Java+MySQL+Tomcatで始めるWebアプリケーション構築入門」のテキスト:P406〜P415「JSPとJDBC」でCDのサンプルコードを使用したところ、更新処理と追加処理ができません。
何が悪いのでしょうか?教えて下さい。。。



環境は以下の通りです。

OS:WindowsXP HomeEdition
ブラウザ:IE7
Java、MySQL、Tomcatは全てCDの中にあるものを使用しています。



トラブルの内容は以下の通りです。

[user_name]を変更し更新ボタンを押すと新規で追加されます。
[password][real_name][priv]の1つ以上を変更し更新ボタンを押すと「ユーザが重複しています」とエラーメッセージが表示されます。
新規に作成し追加ボタンを押すと「更新に失敗しました」とエラーメッセージが表示されます。
投稿:ミニミニ[mini98]/2008年 01月 18日 17時 09分 /更新:2008年 01月 18日 17時 09分
RE:JSPとJDBCでのトラブル
by 竹形 誠司[takegata]
竹形です。こんにちは。

すみません。この問題はCD-ROMに収録したファイルが間違っていたことが原因です。
下記の正誤表のP.413の部分を参照してください。

http://jamy.to/web/book/hoi12.txt

よろしくお願いします。
投稿:竹形 誠司[takegata]/2008年 01月 18日 18時 37分 /更新:2008年 01月 18日 19時 46分
RE:JSPとJDBCでのトラブル
by ミニミニ[mini98]
こんにちは。お返事ありがとうございます。

「BBS/DbcpTest/UserEdit.jsp」の修正箇所は参考にさせて頂きます。
ただ、今回のトラブルは「BBS/DbTest/・・・」のファイル上でのエラーとなります。

お手数をおかけして申し訳ありませんが、宜しくお願いしますm(_ _)m
投稿:ミニミニ[mini98]/2008年 01月 19日 15時 24分 /更新:2008年 01月 19日 15時 37分
RE:JSPとJDBCでのトラブル
by 竹形 誠司[takegata]
あぁ、すみません。勘違いしました。私の環境では正しく動いているようです。
ご質問に書かれているような現象は「新規」と「更新」の処理が逆になっているような感じですね。

UserUpdate.jspでは、次の部分(31行目)でstrIdが "新規" の場合に新規の処理、それ以外の場合に更新の処理をするようになっています。

    }else if(!strId.equals("新規")){    //挿入
この行の"!" が抜けていると、ご質問のような現象が発生するのですが、CD−ROMのコードはそのままテストされているのですよね?このあたりをもう一度確認してみていただけますか?

投稿:竹形 誠司[takegata]/2008年 01月 19日 22時 18分 /更新:2008年 01月 19日 22時 18分
RE:JSPとJDBCでのトラブル
by ミニミニ[mini98]
1日おいたらちゃんと動きました・・・(?)
何回も試してみてからのコメントだったんですが、本当に申し訳ないです。
お手数をおかけしてすみませんでしたm(_ _)m

CD-ROMのコード「BBS/DbTest/UserUpdate.jsp」を見ると、StatementとPreparedStatementが混在してるのですが、両方あっても問題はないのですか?
テキストP413の方では、PreparedStatementの方しか書いてないのですが・・・
投稿:ミニミニ[mini98]/2008年 01月 21日 10時 23分 /更新:2008年 01月 21日 17時 09分
RE:JSPとJDBCでのトラブル
by 竹形 誠司[takegata]
ふーむ、そうですか。現象が再現できないというのは気持ちが悪いですね。また何か分かったら教えてください。

Statement と PreparedStatementはどちらもSQL文を実行するためのクラスで、状況によってどちらか一方を選びます。本書では、単純なSQL文の場合にStatementを使い、同じ形のSQL文を繰り返し実行したり、ユーザーが入力した文字列をSQL文に組み込む場合などはPreparedStatementを使っています。

PreparedStatementのsetStringメソッドを使えば、ダブルクオーテーションやセミコロンなどの文字が自動的にエスケープシーケンスに変換されるので、SQLインジェクションなどの心配がありません。
投稿:竹形 誠司[takegata]/2008年 01月 21日 10時 52分 /更新:2008年 01月 21日 11時 11分
RE:JSPとJDBCでのトラブル
by ミニミニ[mini98]
返信が遅くなってしまいすみません・・・(>_<)

Statement と PreparedStatementについてですが、「状況によってどちらか一方」ということは1つのファイル内に記述する場合、両方を同時に使用することもあるということでしょうか?
投稿:ミニミニ[mini98]/2008年 01月 25日 10時 38分 /更新:2008年 01月 25日 10時 38分
RE:JSPとJDBCでのトラブル
by 竹形 誠司[takegata]
両方を同時に使用しても問題ありません。ただ、その場合は当然別々のオブジェクトになりますから、別々のSQL文を実行することになります。形が異なる複数のSQL文を実行する際に、StatementとPreparedStatementの両方を使う場合があります。
投稿:竹形 誠司[takegata]/2008年 01月 25日 11時 19分 /更新:2008年 01月 25日 11時 20分
RE:JSPとJDBCでのトラブル
by ミニミニ[mini98]
理解できました。(^^)/ ありがとうございます。
投稿:ミニミニ[mini98]/2008年 01月 25日 17時 51分 /更新:2008年 01月 25日 17時 51分