• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Prepared Statementがおかしい)

Prepared Statementがおかしい

このQ&Aのポイント
  • MySQLに対して検索する Prepared Statement について質問します。
  • UPDATE文でエラーが出ますが、INSERT文でも同様にGAEでは通るのですがAWSではエラーになります。
  • Prepared Stateオブジェクトを利用すると、SQLの中身が捉えにくく解決できない状況です。

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

  • ベストアンサー
  • amino_pl
  • ベストアンサー率50% (1/2)
回答No.3

失礼しました。 >int count = pstmt.executeUpdate(sql); を int count = pstmt.executeUpdate(); でした。

panasobi
質問者

お礼

amino_plさん、教えて頂いた通り int count = pstmt.executeUpdate(); でエラーが出なくなり、ちゃんとアップデートできるようになりました。 確かに、 pstmt = conn.prepareStatement(sql); って sql を引数にセットしておいて、更に int count = pstmt.executeUpdate(sql); はクドイですよね。 でも変ですねぇ? Google App Engine では pstmt = conn.prepareStatement(sql) で問題なく通ってしまいます。 今再度やってみたのですがやっぱり通ってしまいました。 これって、Google App Engine のSDKがユルクて、AWSのSDKが厳密と いうことでしょうか? それともJava6とJava7の違いでしょうか? 理由はよくわかりませんけど、結果オーライです。 amino_plさん、本当にありがとうございました。 大助かりです。感謝の気持ちで一杯です。 ありがとうございました。

その他の回答 (2)

  • amino_pl
  • ベストアンサー率50% (1/2)
回答No.2

>pstmt = conn.prepareStatement(sql); ↓ pstmt = conn.prepareStatement();

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 確実に同じソースを利用しているのであればよくわかりませんが pstmt.setString(1, staffName); pstmt.setString(2, staffSort); pstmt.setInt(2, staffId); 最後のpstmt.setInt(2,staffId)は pstmt.setInt(3,staffId); ではないでしょうか? 質問する際の転記ミスだったらスミマセン。

panasobi
質問者

お礼

早速の回答ありがとうございました。 「staffSort」を削除してより単純なSQLにしたりいろいろやってみました。投稿するときそのときの変更が残ってしまったものと思われます。 実際のソースでは pstmt.setInt(3,staffId); となっています。 その意味では転記ミスです。 混乱させてゴメンナサイ

関連するQ&A