Estou tentando alterar dados e dá uma erro em que necessita da declaração da variável escalar!
Este erro se encontra na minha DAO, no método alterar, que esta logo abaixo:
public int alterar (Contratos contrato ){
Connection con = new ConexaoDao().conectar();
PreparedStatement pstm =null;
ResultSet rs = null;
int resultado = 0;
try {
pstm = con.prepareStatement(
"UPDATE CONTRATO SET sTipoCadastro=?, iNumeroContrato=?, sNumeroProcesso=?," +
"dtPropostaEmpresa=?, dtPrazoExecucao=?, dtPrazoGarantiaExecucao=?," +
"nValorMensal=?, nValorGlobal=?, nDescontoOferecido=?, iNumeroLancamentoSIAFI=?," +
"dtPrazoPagamento=?, dtDuracaoContrato=?, dtInicioVigencia=?, dtTerminoVigencia=?," +
"dtAssinatura=?, sDescricaoObjeto=?" +
"WHERE iCodigo=?");
pstm.setString(1, contrato.getsTipoCadastro());
pstm.setString(2, contrato.getiNumeroContrato());
pstm.setString(3, contrato.getsNumeroProcesso());
pstm.setString(4, contrato.getDtPropostaFornecedor());
pstm.setString(5, contrato.getDtPrazoExecucao());
pstm.setString(6, contrato.getDtPrazoGarantiaExecucao());
pstm.setString(7, contrato.getnValorMensal());
pstm.setString(8, contrato.getnValorGlobal());
pstm.setString(9, contrato.getnDescontoOferecido());
pstm.setString(10,contrato.getDtPrazoPagamento());
pstm.setString(11, contrato.getiNumeroLancamentoSIAFI());
pstm.setString(12, contrato.getDtDuracaoContrato());
pstm.setString(13, contrato.getDtInicioVigencia());
pstm.setString(14, contrato.getDtTerminoVigencia());
pstm.setString(15, contrato.getDtAssinatura());
pstm.setString(16, contrato.getsDescricaoObjeto());
pstm.setInt(17, contrato.getiCodigo());
resultado = pstm.executeUpdate();
con.close();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Erro no Metodo alterarContrato!");
System.out.println("Erro no Metodo alterarContrato!");
e.printStackTrace();
}
return resultado;
}
}
Erro:
Erro no Metodo alterarContrato!
com.microsoft.sqlserver.jdbc.SQLServerException: É necessário declarar a variável escalar “@P15WHERE”.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:156)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1373)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:371)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:322)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4003)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1550)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:160)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:133)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:290)
at dao.ContratosDao.alterar(ContratosDao.java:197)
at servlet.ServletAlteraContrato.doPost(ServletAlteraContrato.java:77)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Ainda diz que o erro esta ai na linha 36, onde tem o executeUpdate
Se alguém puder me ajudar!!!