Quantcast
Channel: 質問!ITmedia 新着質問(Java/253)
Viewing all articles
Browse latest Browse all 2439

Prepared Statementがおかしい

$
0
0
MySQLに対して検索する Prepared Statement について質問します。 現在、 Google App Engine(GAE) で動いていたJavaのアプリケーションを Amazon Web Service(AWS) に移動すべく、ソースの見直しを行っています。 以下のソースを走らせると、GAEのローカルテスト環境では動くものの、AWSのローカルテスト環境では エラーが出てしまいます。 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); response.setContentType("charset=utf-8"); PrintWriter out = response.getWriter(); try{ /** データベースへの接続を保持するConnectionクラス */ DBAccess dba = new DBAccess(); Connection conn = dba.getConnection(); PreparedStatement pstmt = null; int staffId = Integer.parseInt(request.getParameter("staffId")); String staffName = request.getParameter("staffName"); String staffSort = request.getParameter("staffSort"); String sql = "UPDATE first_tbl_staff SET staffName=?, staffSort=? WHERE staffId=?"; pstmt = conn.prepareStatement(sql); pstmt.setString(1, staffName); pstmt.setString(2, staffSort); pstmt.setInt(2, staffId); System.out.println("sql================" + sql); int count = pstmt.executeUpdate(sql); ※※※←ここで落ちる if(count == 1){ String res = "["; res += "{\"staffId\":\"" + staffId + "\"}"; res += "]"; out.println(res); } pstmt.close(); conn.close(); } catch(Exception e){ System.out.println("例外発生:" + e ); }finally{ } } } コンソールを見ると、以下のプリントアウト文と例外を出しています。 sql================UPDATE first_tbl_staff SET staffName=?, staffSort=? WHERE staffId=? 例外発生:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?, staffSort=? WHERE staffId=?' at line 1 簡単なUPDATE文ですので、文法的にも間違いないと思いますが、何度やってもGAEでは動作しますが、AWSではエラーとなってしまいます。 それぞれの開発環境ですが、同一のマシン(Windows7 32bit)に2つのEcripseを載せています。 【GAE】 ・Eclipse3.7 ・Java 6 ・Jetty? ・App Engine SDK ・MySQL5.5.27  ・jdbcドライバ:mysql-connector-java-5.1.26-bin.jar 【AWS】 ・Eclipse4.3 ・Java 7 ・Tomcat 7 ・AWS SDK ・MySQL5.5.27  ・jdbcドライバ:mysql-connector-java-5.1.26-bin.jar MySQLはローカルの同一のDB/テーブルを見に行ってます。 UPDATE文でエラーが出ますが、INSERT文でも同様にGAEでは通るのですがAWSではエラーになります。 因みにPrepared Statementオブジェクトではなく Statementオブジェクトを利用すると問題なく動きました。 丸1日かかっていろいろ環境を変えたりしていますが、Prepared Stateオブジェクトを利用すると、SQLの中味が 捉えにくく解決できない状況です。 どなた、ヒントになるようなことがおわかりでしたら、ご指導下さい。 よろしくお願いします。

Viewing all articles
Browse latest Browse all 2439

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>