[RESOLVIDO] Erro UPDATE Parameter index

5 respostas
Vander_Carlos

Galera dei uma procurada em alguns tópicos aqui no GUJ mas não consegui ajeitar. D:

O erro é esse:
java.sql.SQLException: Parameter index out of range (21 > number of parameters, which is 20).
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
	at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3711)
	at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3695)
	at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4546)
	at br.autodontov1.dao.PacienteDao.altera(PacienteDao.java:173)
	at br.autodontov1.forms.FormAtualizarPaciente.alteraContato(FormAtualizarPaciente.java:714)
	at br.autodontov1.forms.FormAtualizarPaciente.btAtualizarActionPerformed(FormAtualizarPaciente.java:723)
	at br.autodontov1.forms.FormAtualizarPaciente.access$300(FormAtualizarPaciente.java:30)
	at br.autodontov1.forms.FormAtualizarPaciente$4.actionPerformed(FormAtualizarPaciente.java:308)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at org.pushingpixels.substance.internal.utils.RolloverButtonListener.mouseReleased(RolloverButtonListener.java:124)
	at java.awt.Component.processMouseEvent(Component.java:6504)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2713)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Mar 19, 2012 11:15:38 AM br.autodontov1.forms.FormAtualizarPaciente btAtualizarActionPerformed
Grave: null
A classe DAO:
public void altera(Paciente p) throws SQLException {

String sql = "UPDATE paciente set nome = ?, datacadastro = ?, datanascimento =?, idade =?, sexo = ?,"
        + "tiposanguineo = ?, cpf = ?, rg = ?, endereco = ?, bairro = ?, cidade = ?, estado = ?, email = ?, "
        + "telresidencial = ?, telcelular = ?, pai = ?, mae = ?, responsavel = ?, motivoconsulta," +
        "telcontato, op_contato, op_residencial, op_celular = ? WHERE codigo = ?";
      
PreparedStatement stmt = conexao.prepareStatement(sql);

        stmt.setString(1, p.getNome());
        stmt.setString(2, p.getDataCadastro());
        stmt.setString(3, p.getDataNascimento());
        stmt.setString(4, p.getIdade());
        stmt.setString(5, p.getSexo());
        stmt.setString(6, p.getTipoSanguineo());
        stmt.setString(7, p.getCpf());
        stmt.setString(8, p.getRg());
        stmt.setString(9, p.getEndereco());
        stmt.setString(10, p.getBairro());
        stmt.setString(11, p.getCidade());
        stmt.setString(12, p.getEstado());
        stmt.setString(13, p.getEmail());
        stmt.setString(14, p.getTelResidencial());
        stmt.setString(15, p.getTelCelular());
        stmt.setString(16, p.getPai());
        stmt.setString(17, p.getMae());
        stmt.setString(18, p.getResponsavel());
        stmt.setString(19, p.getMotivoconsulta());
        stmt.setString(20, p.getTelContato());
        stmt.setString(21, p.getOp_contato());
        stmt.setString(22, p.getOp_residencial());
        stmt.setString(23, p.getOp_celular());
        stmt.setLong(24, p.getCodigo());

        //Executa o codigo sql
        stmt.execute();
        stmt.close();
    }
E aqui o método:
public void alteraContato() throws SQLException {
            
                Paciente p = new Paciente();
                PacienteDao dao = new PacienteDao();

                p.setCodigo(Long.valueOf(ctCodigo.getText()));
                p.setNome(ctNome.getText());
                p.setDataCadastro(ctDataCadastro.getText());
                p.setDataNascimento(ctDataNascimento.getText());
                p.setIdade(ctIdade.getText());
                p.setSexo((String) cbSexo.getSelectedItem());
                p.setTipoSanguineo((String) cbTipoSanguineo.getSelectedItem());
                p.setCpf(ctCPF.getText());
                p.setRg(ctRG.getText());
                p.setEndereco(ctEndereco.getText());
                p.setBairro(ctBairro.getText());
                p.setCidade(ctCidade.getText());
                p.setEstado((String) cbEstado.getSelectedItem());
                p.setEmail(ctEmail.getText());
                p.setTelResidencial(ctTelResidencial.getText());
                p.setTelCelular(ctTelCelular.getText());
                p.setPai(ctPai.getText());
                p.setMae(ctMae.getText());
                p.setResponsavel(ctResponsavel.getText());
                p.setMotivoconsulta((String) cbMotivoConsulta.getSelectedItem());
                p.setTelContato(ctTelContato.getText());
                p.setOp_contato((String) cbOpContato.getSelectedItem());
                p.setOp_residencial((String) cbOpResidencial.getSelectedItem());
                p.setOp_celular((String) cbOpCelular.getSelectedItem());
                dao.altera(p);

            JOptionPane.showMessageDialog(null, "Paciente alterado com sucesso.");
        }
[]'s

5 Respostas

Hebert_Coelho

Olha a mensagem de erro: Parameter index out of range (21 > number of parameters, which is 20).

Você está passando a quantidade errada de parâmetros.

Vander_Carlos

Até agora eu não achei essa quantidade.

:S

Hebert_Coelho

Vander Carlos:
Até agora eu não achei essa quantidade.

:S

eu achei! =P

motivoconsulta," +
"telcontato, op_contato, op_residencial

Cadê as “?”.

Vander_Carlos

Vander_Carlos

Valeu ai cara, já tava um tédio aqui -_-

[]'s

Criado 19 de março de 2012
Ultima resposta 19 de mar. de 2012
Respostas 5
Participantes 2