Pessoal estou com o seguinte problema
Grave: Servlet.service() for servlet [br.com.OdontoEstetica.jdbc.Servlet.ServletAtualizaConsulta] in context with path [/OdontoEstetica] threw exception
java.lang.RuntimeException: java.sql.SQLException: Parameter index out of range (12 > number of parameters, which is 11).
at br.com.OdontoEstetica.jdbc.DAO.ConsultasDAO.altera(ConsultasDAO.java:82)
at br.com.OdontoEstetica.jdbc.Servlet.ServletAtualizaConsulta.service(ServletAtualizaConsulta.java:108)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
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.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: Parameter index out of range (12 > number of parameters, which is 11).
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3729)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3713)
at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3755)
at com.mysql.jdbc.PreparedStatement.setBoolean(PreparedStatement.java:3272)
at br.com.OdontoEstetica.jdbc.DAO.ConsultasDAO.altera(ConsultasDAO.java:76)
... 18 more
Alguem pode me ajudar?
codigo java
package br.com.OdontoEstetica.jdbc.DAO;
/**
* @author Lilian
*
*/
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import br.com.OdontoEstetica.jdbc.ConnectionFactory;
import br.com.OdontoEstetica.jdbc.modelo.Consultas;
public class ConsultasDAO {
private Connection connection;
public ConsultasDAO(){
this.connection = new ConnectionFactory().getConnection();
}
public void adiciona(Consultas consultas){
String sql = "insert into agenda_consulta(codPaciente, nomePaciente, rg, cpf, datanascimento, endereco, telefone, nomeFuncionario, servico, dataHoraConsulta, preco, status) values(?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?, ?) ";
try{
// PreparedStatement para inserção
PreparedStatement stmt = connection.prepareStatement(sql);
//seta os valores
stmt.setInt(1, consultas.getCodPaciente());
stmt.setString(2, consultas.getNomePaciente());
stmt.setString(3,consultas.getRG());
stmt.setString(4,consultas.getCPF());
stmt.setDate(5,(java.sql.Date) new Date(consultas.getDataNascimento().getTimeInMillis()));
stmt.setString(6,consultas.getEnderecoPaciente());
stmt.setLong(7,consultas.getTelefonePaciente());
stmt.setString(8,consultas.getNomeFuncionario());
stmt.setDate(9, (java.sql.Date) new Date(consultas.getDataHoraConsulta().getTimeInMillis()));
stmt.setString(10, consultas.getServico());
stmt.setDouble(11, consultas.getValorConsulta());
stmt.setBoolean(12,consultas.isStatus());
//executa
stmt.execute();
stmt.close();
}catch (SQLException e){
throw new RuntimeException(e);
}
}
public void altera (Consultas consultas){
String sql = "update agenda_consulta set codPaciente= ?, nomePaciente= ?, rg= ?, cpf= ?, datanascimento= ?, endereco= ?, telefone= ?, nomeFuncionario= ?, servico= ?, dataHoraConsulta= ?, preco= ?, status ";
try{
PreparedStatement stmt = connection.prepareStatement(sql);
stmt.setInt(1, consultas.getCodPaciente());
stmt.setString(2, consultas.getNomePaciente());
stmt.setString(3,consultas.getRG());
stmt.setString(4,consultas.getCPF());
stmt.setDate(5,(java.sql.Date) new Date(consultas.getDataNascimento().getTimeInMillis()));
stmt.setString(6,consultas.getEnderecoPaciente());
stmt.setLong(7,consultas.getTelefonePaciente());
stmt.setString(8,consultas.getNomeFuncionario());
stmt.setDate(9, (java.sql.Date) new Date(consultas.getDataHoraConsulta().getTimeInMillis()));
stmt.setString(10, consultas.getServico());
stmt.setDouble(11, consultas.getValorConsulta());
stmt.setBoolean(12,consultas.isStatus());
stmt.setInt(13, consultas.getCodConsulta());
stmt.execute();
stmt.close();
}catch (SQLException e){
throw new RuntimeException(e);
}
}
public void remove(Consultas consultas){
try{
PreparedStatement stmt = connection.prepareStatement("delete from agenda_consulta where codConsulta= ?");
stmt.setInt(1,consultas.getCodConsulta());
stmt.execute();
stmt.close();
}catch (SQLException e){
throw new RuntimeException(e);
}
}
}
package br.com.OdontoEstetica.jdbc.Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.OdontoEstetica.jdbc.DAO.ConsultasDAO;
import br.com.OdontoEstetica.jdbc.modelo.Consultas;
/**
* Servlet implementation class ServletAtualizaConsulta
*/
@WebServlet("/ServletAtualizaConsulta")
public class ServletAtualizaConsulta extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -3100959352816397574L;
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
super.doPost(request, response);
}
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
// pegando os parametros do request
int codConsulta = Integer.parseInt(request.getParameter("codConsulta"));
int codPaciente = Integer.parseInt(request.getParameter("codPaciente"));
String nomePaciente = request.getParameter("nomePaciente");
String rg = request.getParameter("rg");
String cpf = request.getParameter("cpf");
String dataNascimentoEmTexto = request.getParameter("dataNascimento");
String endereco = request.getParameter("endereco");
Long telefone = Long.parseLong(request.getParameter("telefone"));
String nomeFuncionario = request.getParameter("nomeFuncionario");
String servico = request.getParameter("servico");
String dataHoraConsultaEmTexto = request
.getParameter("dataHoraConsulta");
Double valorConsulta = Double.parseDouble(request
.getParameter("valorConsulta"));
boolean status = Boolean.parseBoolean(request.getParameter("status"));
Calendar dataNascimento = null;
Calendar dataHoraConsulta = null;
// conversão de data de nascimento do paciente
try {
Date datanasc = (Date) new SimpleDateFormat("dd/MM/yyyy")
.parse(dataNascimentoEmTexto);
dataNascimento = Calendar.getInstance();
dataNascimento.setTime(datanasc);
} catch (ParseException e) {
out.println("Erro ao converter data de nascimento do paciente");
return;
}
// conversão de data de consulta
try {
Date dataHConsulta = (Date) new SimpleDateFormat("dd/MM/yyyy")
.parse(dataHoraConsultaEmTexto);
dataHoraConsulta = Calendar.getInstance();
dataHoraConsulta.setTime(dataHConsulta);
} catch (ParseException e) {
out.println("Erro ao converter data de consulta");
}
// monta um objeto consultas
Consultas consultas = new Consultas();
consultas.setCodConsulta(codConsulta);
consultas.setCodPaciente(codPaciente);
consultas.setNomePaciente(nomePaciente);
consultas.setRG(rg);
consultas.setCPF(cpf);
consultas.setDataNascimento(dataNascimento);
consultas.setEnderecoPaciente(endereco);
consultas.setTelefonePaciente(telefone);
consultas.setNomeFuncionario(nomeFuncionario);
consultas.setServico(servico);
consultas.setDataHoraConsulta(dataHoraConsulta);
consultas.setValorConsulta(valorConsulta);
consultas.setStatus(status);
// salva a consulta
ConsultasDAO dao = new ConsultasDAO();
dao.altera(consultas);
RequestDispatcher rd = request.getRequestDispatcher("/Alterado.jsp");
rd.forward(request, response);
}
}
