Java.sql.SQLException: Índice de coluna inválido

14 respostas
L

Oi Pessoal. Preciso de uma ajudinha o seguinte código me da esta excepção: java.sql.SQLException: Índice de coluna inválido.

Alguem me pode ajudar?

Obrigada.
String query = ("insert into Pessoa values (?,? ,to_char(systimestamp, 'dd:mm:yyyy hh24:mi:ss:ff3'),?,?)");
  PreparedStatement pstmt = conn.prepareStatement(query);
  
    
 pstmt.setString(1,args[0]);
 pstmt.setString(2, args[1]);
// pstmt2.setInt(3,rset.getInt(2));
 pstmt.setString(4, args[3]); 
 pstmt.setString(5, args[4]);

    pstmt.executeUpdate();

Copy.copy(args[5], "c:/novaimagem.jpg");


  pstmt.close();
 
              
	 conn.close(); 
	 

}

  
      catch(Exception e){
	  
		  System.out.println(e.getMessage());
            }
      
    }
}

14 Respostas

R

Vc só tem 4 parâmetros a passar e está setando de 1 a 5, com exceção do 3. Não está errado nisso?

L

eu quero inserir os primeiros 4 parametros numa tabela e a imagem no filesystem

L

Copy.copy(args[5], "c:/novaimagem.jpg"); o Copy é outra classe… posso passar o codigo aqui se quiser…

R
String query = ("insert into Pessoa values (?,? ,to_char(systimestamp, 'dd:mm:yyyy hh24:mi:ss:ff3'),?,?)");  //CONTE O NÚMERO DE INTERROGAÇÕES
PreparedStatement pstmt = conn.prepareStatement(query);  
    
// AGORA OLHA OS ÍNDICES QUE VC ESTÁ UTILIZANDO: 1, 2, 4, 5?
pstmt.setString(1,args[0]);  
pstmt.setString(2, args[1]);  
// pstmt2.setInt(3,rset.getInt(2));  
pstmt.setString(4, args[3]);   
pstmt.setString(5, args[4]);
L

:shock: pura distracção… Obrigada.

Mas agora da a seguinte excepção ORA-00947 not enough values…

R

Agora é melhor vc consultar o pessoal de Oracle.

Abs!
Danilo

B

Poste o novo código p/ gente ver.

L
String query = ("insert into Pessoa values (?,? ,to_char(systimestamp, 'dd:mm:yyyy hh24:mi:ss:ff3'),?,?)");   
  PreparedStatement pstmt = conn.prepareStatement(query);   
     
       
pstmt.setString(1,args[0]);   
pstmt.setString(2, args[1]);   
pstmt.setString(3, args[2]);   
pstmt.setString(4, args[3]);   
Copy.copy(args[4], "c:/novaimagem.jpg");    

    pstmt.executeUpdate();   
  
 
  
  
  pstmt.close();   
  
                 
     conn.close();   
       
  
}   
  
     
      catch(Exception e){   
         
          System.out.println(e.getMessage());   
            }   
         
    }   
}

Está aqui..

B

Quantas colunas tem na tabela Pessoa?

L

tem 5

B

Certeza?

Esse erro acontece quando não está se passando uma quantidade suficiente de parâmetros para inserir a linha na tabela:

http://www.techonthenet.com/oracle/errors/ora00947.php

L

Sim tem 5. Eu insiro 4 e uma ja lá está… só se estiver a fazer confusao a foto que é enviada para o filesystem.

O

Mude de:

String query = ("insert into Pessoa values (?,? ,to_char(systimestamp, 'dd:mm:yyyy hh24:mi:ss:ff3'),?,?)");

para

String query = ("insert into Pessoa (NomeColuna1, NomeColuna2,NomeColuna3,NomeColuna4,NomeColuna5) values (?,? ,to_char(systimestamp, 'dd:mm:yyyy hh24:mi:ss:ff3'),?,?)"); //substitua pelo nome das colunas da sua tabela

Assim você tem certeza se a coluna está certo com relação a tabela.

L

obrigada pela dica :slight_smile:

Criado 11 de setembro de 2008
Ultima resposta 12 de set. de 2008
Respostas 14
Participantes 4