2012-04-01 3 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일 오후 11시 29분 2초 출할 org.apache.catalina.core.StandardWrapperValve 심각 : 서블릿의 Servlet.service() JSP]와 문맥 경로 [] 예외가 발생했습니다 [예외 라인에서 처리 JSP 페이지 /changepwd_done.jsp 발생 81

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

스택 트레이스 :] 원인으로 은 java.sql.SQLException : 때 autocomm 커밋 호출 할 수 없습니다 = true com.mysql.jdbc.SQLError.createSQLException (SQLError.java:936)에서 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 : 210) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter (MonitorFilter.java:393) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:243) at org. org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:224) at 012.apache.catalina.core.StandardContextValve.invoke StandardContextValve.java:169) at org.apache.catalina.authenticator.A uthenticatorBase.invoke (AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:929) at org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:118) at 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) at org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run (JIoEndpoint.java:304) at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:603) at java.lang.Thread.run (Thread. 자바 : 722)

+0

코드가 ... 올바른 것 같다 오류에 스택 추적을 인쇄 할 수 있습니까?여기에 스택 추적을 붙여 넣으십시오. –

+3

autocommit = true 인 경우 커밋 메소드를 호출 할 수 없습니다. 해당 메소드 호출을 제거하거나 autocommit = false를 먼저 설정하십시오. con.setAutocommit (false) –

+0

JSP 파일에서 해당 메소드를 제거하고 'commit'하면 작동합니다. –

답변

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

그래, 그렇게 생각해. 희망 그 해결책을 알아낼 수있었습니다 :-) –

관련 문제