[Resolvido]Erro na Alteração de Cadastro com NetBeans e Firebird

3 respostas
helder.emiliano
Pessoal, tava fazendo uns testes para o meu tcc, com Netbeans conectado ao FireBird, e Consegui inserir Dados na Tabela, consegui consultar dados também, mas na hora de alterar, num tem acordo, segue o código e o erro:
package sistemabigua;

import Beans.BeanMecanico;
import ClassesBancodeDados.Mecanico;
import java.sql.SQLException;


public class Principal {


   public static void main(String[] args) throws SQLException {
        BeanMecanico contato = new BeanMecanico();
        contato.setCodMecanico(Integer.valueOf(1));//Alteraria o Mecanico com código numero 1
       contato.setNomeMecanico("Fulano de Tal");
        contato.setFoneMecanico("12456");
        contato.setCPFMecanico("[telefone removido]");
        Mecanico dao = new Mecanico();
        dao.altera(contato);
      }
}
e o erro é o seguinte: [color=red] Have no FileObject for C:\Program Files (x86)\Java\jdk1.6.0_20\jre\lib\sunrsasign.jar Have no FileObject for C:\Program Files (x86)\Java\jdk1.6.0_20\jre\classes Exception in thread "main" org.firebirdsql.jdbc.FBMissingParameterException: Not all parameters were set. at org.firebirdsql.jdbc.AbstractPreparedStatement.internalExecute(AbstractPreparedStatement.java:716) at org.firebirdsql.jdbc.AbstractPreparedStatement.execute(AbstractPreparedStatement.java:663) at ClassesBancodeDados.Mecanico.altera(Mecanico.java:71) at sistemabigua.Principal.main(Principal.java:27) Java Result: 1[/color][color=green] CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos) [/color] Pelo que entendi ele indica um erro no código de Mecanico onde criei o método altera, mas não consigo descobrir o erro, segue o código:
public void altera(BeanMecanico c1) throws SQLException {
        String sql = "update CAD_MECANICO set  COD_MECANICO=?, FONE_MECANICO=? , CPF_MECANICO=? where NOME_MECANICO=?";
        PreparedStatement stmt = conexao.prepareStatement(sql);
        stmt.setInt(1, c1.getCodMecanico());
        stmt.setString(2, c1.getNomeMecanico());
        stmt.setString(3, c1.getFoneMecanico());
        stmt.setString(4, c1.getCPFMecanico());
         //executa o código SQL
        stmt.execute();
        stmt.close();
    }
Alguém pode me Ajudar?

3 Respostas

S

Cara não sei bem qual o erro mas, uma dica, abandona o PreparedStatement para firebird. Fiz um projeto com firebird e não consegui seguir em frente com PreparedStatement. Dava varios erros inexplicaveis, então tentei usar o statement simples, query pura, e funcionou. Pode ser o seu caso.
Abraço

helder.emiliano

Consigo fazer não retornar mais nenhum erro , foi só trocar o Integer.Valueof por String.Valueof e agora que complicou mesmo porque agora não retorna nem um tipo de erro , mas também não altera, o método altera() nada mudou , e só mudei a hora de testá-lo está assim:

public static void main(String[] args) throws SQLException { BeanMecanico contato = new BeanMecanico(); contato.setCodMecanico(String.valueOf(2));//Alteraria o Mecanico com código numero 2 contato.setNomeMecanico("Fulano de Tal"); contato.setFoneMecanico("12456"); contato.setCPFMecanico("044440"); Mecanico dao = new Mecanico(); dao.altera(contato); System.out.println("alterado");
ele inclusive retorna a mensagem alterado, mas não altera, alguma sugestão?

helder.emiliano

Consegui, e aff nunca imaginei que algo tão simples resolveria o meu problema , o erro estava na ordem dos sets…
foi só jogar o setcodigo por ultimo com o numero 4 e resolvido…
Obrifgado.

public void altera(BeanMecanico c1) throws SQLException {
           String sql = "UPDATE CAD_MECANICO set  NOME_MECANICO=?,  FONE_MECANICO=?, CPF_MECANICO=? WHERE COD_MECANICO=? ";
        PreparedStatement stmt = conexao.prepareStatement(sql);
       
        stmt.setString(1, c1.getNomeMecanico());
        stmt.setString(2, c1.getFoneMecanico());
        stmt.setString(3, c1.getCPFMecanico());
        stmt.setString(4, c1.getCodMecanico());
        //executa o código SQL
       stmt.execute();
       stmt.close();
    
}
Criado 17 de junho de 2010
Ultima resposta 23 de jun. de 2010
Respostas 3
Participantes 2