2012-04-01 8 views
1

これらはjspファイルにあります。しかし、これらの値はmysqlテーブルでは更新されません。コミットしていないかもしれません。どうすればこの問題を解決できますか?jspからMySQLテーブルを更新

String passc1 = request.getParameter("passc1"); 
String accid = request.getParameter("accid"); 
int i = 0; 

String sql = 
     " update customertb " 
     + " set passwd = ?" 
     + " where acc_no = ?;"; 

try { 
    PreparedStatement ps = con.prepareStatement(sql); 
    ps.setString(1, passc1); 
    ps.setString(2, accid); 

    i = ps.executeUpdate(); 
} catch (Exception e) { 
    // do something with Exception here. Maybe just throw it up again 
} finally { 
    con.close(); 

} 

スタックトレース

2012年4月1日org.apache.catalina.core.StandardWrapperValve重度 を呼び出す午前11時29分02秒PM:のServlet.service()サーブレットの[JSP]に関連してパスが[]例外をスローした[例外はラインで処理JSPページ/changepwd_done.jspを発生81

 e.printStackTrace(); 
} finally { 
    //con.close(); 
    con.commit(); 
} 

スタックトレース:]根本的な原因で ます。java.sql.SQLException:ときautocommコミット呼び出すことはできません(SQLError.java:936) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:933) at com.mysql.jdbc.ConnectionImpl.commit org.apache.jasper.runtime.HttpJspBase.serviceでorg.apache.jsp.changepwd_005fdone_jsp._jspService(changepwd_005fdone_jsp.java:160) で(ConnectionImpl.java:1635) (HttpJspBase.java:70) のjavax.servletで.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java :389) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.h ttp.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: (ApplicationFilterChain.java:243) at org。 apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke( StandardContextValve.java:169) at org.apache.catalina.authenticator.A org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)の にあるuthenticatorBase.invoke(AuthenticatorBase.java:472) (org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) org.apache.catalina.core.StandardEngineValve.invokeでorg.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) (StandardEngineValve.java:118)org.apache.catalina.connectorで で。 CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:515) (JIoEndpoint.java:304) のjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) のjava.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:603) のjava.lang.Thread.run(スレッド。 Javaの:722)

+0

コードが正しいように思わ...あなたは、エラーのスタックトレースを印刷することができますか?ここにスタックトレースを貼り付けます –

+3

autocommit = trueの場合は、コミットメソッドを呼び出すことはできません。そのメソッド呼び出しを削除するか、最初にautocommit = falseを設定します。con.setAutocommit(false) –

+0

あなたのJSPファイルでそのメソッドを削除します。コミットすれば動作します。 –

答えて

4

キャッチのSQLExceptionとコンソールメッセージを確認してください。

[...] 

try { 
    PreparedStatement ps = con.prepareStatement(sql); 
    ps.setString(1, passc1); 
    ps.setString(2, accid); 
    i = ps.executeUpdate(); 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 
+0

私はaccountidが整数で、彼はそれが文字列であると言っています。それにもかかわらず、この答えは彼が解決策を見つけるのを助けるでしょう。彼は拡張機能のようなコメントを書くべきではありません。彼はlog4jなどの適切なロギングユーティリティを使用して、ロギングを管理する必要があります。 –

+0

ええ、私はそう思います。彼はそれを解決するのに役立つことを願っています:-) –

関連する問題