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

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.

[code] 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());
        }
  
}

}[/code]

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?

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

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

[code]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]); [/code]

:shock: pura distracção… Obrigada.

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

Agora é melhor vc consultar o pessoal de Oracle.

Abs!
Danilo

Poste o novo código p/ gente ver.

[code]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());   
        }   
     
}   

}
[/code]

Está aqui…

Quantas colunas tem na tabela Pessoa?

tem 5

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

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

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.

obrigada pela dica :slight_smile: