[RESOLVIDO] Boa noite Galera, criei um sistema de funcionarios. ele esta duplicando os dados na tabela funcionario, nas outras esta tudo legall

 import CRUD.ContactoCRUD;
 import CRUD.DepartamentoCRUD;
 import CRUD.FuncaoCRUD;
 import CRUD.FuncionarioCRUD;
 import SistemaDAO.Contacto;
 import SistemaDAO.Departamento;
 import SistemaDAO.Funcao;
 import SistemaDAO.Funcionarios;
 import java.sql.SQLException;
 import java.util.Scanner;


    public class Leitura {

FuncionarioCRUD fc = new FuncionarioCRUD();
ContactoCRUD cc = new ContactoCRUD();
FuncaoCRUD fcr = new FuncaoCRUD();
DepartamentoCRUD dc = new DepartamentoCRUD();
Funcionarios fnc =  new Funcionarios();
Contacto c = new Contacto();
Funcao fn = new Funcao();
Departamento d = new Departamento();
Visual vs = new Visual();
Scanner ler = new Scanner(System.in);


    public void Ler() throws SQLException{
        System.out.print("Inforne o nome do funcionario: ");
        String nom = ler.nextLine();
        System.out.print("Informe o Apelido: ");
        String apelid = ler.nextLine();
        System.out.print("Informe o sexo: ");
        String sex = ler.nextLine();
        System.out.print("Informe a data de nascimento: ");
        String dat = ler.nextLine();
        System.out.print("Informe o numero de BI: ");
        String bi = ler.nextLine();
        System.out.print("Informe o nivel: ");
        String nivel = ler.nextLine();
        System.out.print("Informe a provincia de residência: ");
        String prov = ler.nextLine();
        System.out.print("Informe o distrito de residência: ");
        String dist = ler.nextLine();
        System.out.print("Informe o email: ");
        String eml = ler.nextLine();
        System.out.print("Informe o codigo do departamento: ");
        String  codep = ler.nextLine();
        System.out.print("Informe o departamento: ");
        String depart = ler.nextLine();
        System.out.print("Informe o código da função: ");
        String codf = ler.nextLine();
        System.out.print("Informe a função: ");
        String fnca = ler.nextLine();
        System.out.print("Informe o contacto: ");
        int cont = ler.nextInt();
        System.out.print("Informe o nuit: ");
        int nuit = ler.nextInt();


            fnc.setNome(nom);
            fnc.setApelido(apelid);
            fnc.setBi(bi);
            fnc.setDataNasc(dat);
            fnc.setNuit(nuit);
            fnc.setNivelacad(nivel);
            fnc.setSexo(sex);
            fnc.setProvincia(prov);
            fnc.setDistrito(dist);
            d.setCodDep(codep);
            d.setNomeDep(depart);
            c.setTelefone(cont);
            c.setEmail(eml);
            fn.setCodFunc(codf);
            fn.setNomeFunc(fnca);
            
             int i = 0;
             
    System.out.println("1 - Cadstrar || 2 - Cancelar ");
    i =ler.nextInt();
        if(i==1){
            grava();
            System.out.println("Cadastro realizado com sucesso!! ");
            
             } else if (i==2){
         vs.Menu();
        }   
        
}
public boolean grava() throws SQLException{
   
    
            fc.Gravar(fnc);
            cc.gravarCont(c);
            dc.gravarDep(d);
            fcr.gravarFuncao(fn);
    return true;
            
}

}

Olá Euclidio_Dagraca, tudo certo?

Qual o seu bloco de código para o método FuncionárioCRUD.Gravar(Funcionarios)? Acredito que o problema pode estar ai.

Abraços.

Olá Euclidio_Dagraca.

Vendo outra postagem sua aqui vi o código do método.

import Ajustes.Solucoes;
import BaseDados.JavaConexao;
import Classes.Funcionarios;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.ResultSet;

/**
*

    @author EGV
    */

public class FuncionarioUtil {

JavaConexao Conex = new JavaConexao(); // instanciando a classe da base de dados
Funcionarios fnc = new Funcionarios(); //instanciando a classe funcionarios, para usar seus atributos

PreparedStatement ps = null;
ResultSet rst;
Connection con=null;
//Metodo para gravar dados na base
public boolean Gravar(Funcionarios fnc) throws SQLException{
Conex.Conexao();

    String SQLinsersao="insert into funcionario(nome,apelido,sexo,data_nasc,bi,nuit,grau_academico,provincia,distrito,senha,usuario,perfil) values(?,?,?,?,?,?,?,?,?,?,?,?)";
    ps = con.prepareStatement(SQLinsersao);
    ps.setString(1, fnc.getNome());
    ps.setString(2, fnc.getApelido());
    ps.setString(3, fnc.getSexo());
    ps.setString(4, Solucoes.ConverterData(fnc.getDataNasc()));
    ps.setString(5,fnc.getBi());
    //ps.setInt(6, fnc.getNuit());
    ps.setString(7, fnc.getNivelacad());
    ps.setString(8, fnc.getProvincia());
    ps.setString(9, fnc.getDistrito());
    ps.setString(10, fnc.getSenha());
    ps.setString(11, fnc.getUsuario());
    ps.setString(12, fnc.getPerfil());
    ps.executeUpdate(); <----------------------- O ERRO ESTÁ AQUI
    int verifica = ps.executeUpdate();
    
    if(verifica>0)
        return true;
    else        
return false;
}


//Pesquisa
public Funcionarios pesquisar(String Nome) throws SQLException{
   JavaConexao cone = new JavaConexao();
   String SQLconsulta = "select  from funcionario where nome=?";
   PreparedStatement prs =con.prepareStatement(SQLconsulta);
    prs.setString(1, Nome);
    ResultSet rs = prs.executeQuery();
    if(rs.next()){
    fnc.setNome(rs.getString("nome"));
    fnc.setApelido(rs.getString("apelido"));
    fnc.setSexo(rs.getString("sexo"));
    fnc.setDataNasc(Solucoes.ConverterData(rs.getString("data_nasc")));
    fnc.setBi(rs.getString("bi"));
    fnc.setNuit(rs.getInt("nuit"));
    fnc.setNivelacad(rs.getString("grau_academico"));
    fnc.setProvincia(rs.getString("provincia"));
    fnc.setDistrito(rs.getString("distrito"));
    fnc.setSenha(rs.getString("senha"));
    fnc.setUsuario(rs.getString("usuario"));
    fnc.setPerfil(rs.getString("perfil"));
    }

    return fnc;
   }
}

Marquei o erro no bloco de código.

Você está invocando o método executeUpdate() duas vezes, uma sem atribuir o resultado do update em nenhuma variável e outro atribuindo o resultado do executeUpdate() a um int. Então, basta você apagar a linha de código marcada que vai funcionar perfeitamente.

Abraços.

Valeu irmao

1 curtida