Erro insert Parameter index

8 respostas
C

Pessoal, essa minha consulta está retornando esse erro
:
05/05/2011 17:02:10 ManipulaDados.ManipulaBD adiciona
GRAVE: null
java.sql.SQLException: Parameter index out of range (12 > number of parameters, which is 11).

Essa é o meu insert. Onde está o erro? Além desses campos minha tlb tem um campo ID que é PK AI.

public void adiciona(Clientes c1){
	        try {
            String sql = "Insert into tbl_clientes (nome,cpf,iEstad,contato,logradouro,numero,compl,bairro,cep,cidade,uf)values(?,?,?,?,?,?,?,?,?,?,?)";
		PreparedStatement stmt;

            stmt = conexao.prepareStatement(sql);
          
		stmt.setString(2, c1.getNome());
		stmt.setString(3, c1.getCpf());
		stmt.setString(4, c1.getiEstado());
                stmt.setString(5, c1.getContato());
		stmt.setString(6, c1.getLogradouro());
		stmt.setString(7, c1.getNumero());
		stmt.setString(8, c1.getComplemento());
                stmt.setString(9, c1.getBairro());
                stmt.setString(10, c1.getCep());
                stmt.setString(11, c1.getCidade());
                stmt.setString(12, c1.getUf());
                //stmt.setString(11, c1.getComplemento());

		stmt.execute();
		stmt.close();

	} catch (SQLException ex) {
            Logger.getLogger(ManipulaBD.class.getName()).log(Level.SEVERE, null, ex);
        }

8 Respostas

dobau

Seus parâmetros devem começar de 1 a 11 e não de 2 a 12!

C

Nossaa! QUe burroo…rsrs

Valeu

C

Tenho esse código abaixo que deveria pegar o numero do ultimo registro no meu banco de dados, setar esse valor no campo ID de clientes, e depois usar um getId para inserir em outra tabela ( relacionada).

Ele retorna a chave primária da minha tabela cliente normal.

public void buscaID(Clientes c1){

        try {
            String sql = "Select idClientes from tbl_clientes ORDER BY idClientes DESC LIMIT 1 ";
		PreparedStatement stmt;

            stmt = conexao.prepareStatement(sql);

         ResultSet rs = stmt.executeQuery(sql);
         while (rs.next()){
             if(rs.isLast()){
               c1.setId(rs.getInt("idClientes"));
             }
         }
public void cadastraContatos() throws SQLException{
   //Instancio o metodo que pega o id
    ManipulaBD cnn = new ManipulaBD();
  // //Instancio o objt cliente
    Clientes c1 = new Clientes();
    //Guardo o valor do Id
cnn.buscaID(c1);


    String sql = "Insert into tbl_contatos (DDD,TELEFONE,tbl_clientes_idClientes)values(?,?,?)";
		PreparedStatement stmt;

            stmt = conexao.prepareStatement(sql);
           stmt.setInt(1, 18);
           stmt.setString(2,"44444444");
           stmt.setInt(3,c1.getId() );
}

Só que está me retornando esse erro abaixo.

[color=red]Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at hexpherasoluctions.jInternalCadastrarCliente.cadastraContatos(jInternalCadastrarCliente.java:462)
at hexpherasoluctions.jInternalCadastrarCliente.jButton2ActionPerformed(jInternalCadastrarCliente.java:371)
at hexpherasoluctions.jInternalCadastrarCliente.access$100(jInternalCadastrarCliente.java:27)
at hexpherasoluctions.jInternalCadastrarCliente$2.actionPerformed(jInternalCadastrarCliente.java:305)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
[/color]

dobau

Coloca um breakpoint na linha jInternalCadastrarCliente.java:462 e vê o que não está sendo inicializado.

C

Dobau,

Adicionei o BreakPoint no metodo jInternalCadastrarCliente.cadastrarContatos, e rodei a aplicação,onde eu visualizo o log de erro?

drsmachado

O breakpoint é para que você possa debuggar a aplicação.
Referencia qual a linha do código acima corresponde à linha 642 do código no teu ambiente.
Aí podemos dar alguma idéia

C

Ahh sim,
Agora o erro está na linha 467, pq tirei algumas coisas aqui.

Essa linha é

C

Achei o erroo…

No meu metodo
cadastraContatos()

Estava faltando stmt.execute();

valeu

Criado 6 de maio de 2011
Ultima resposta 6 de mai. de 2011
Respostas 8
Participantes 3