Dúvida referente ao ResultSet

6 respostas
L

Primeiramente obrigada ao povo que me ajudou anteriormente. Gente eu estou com o seguinte código funcional. Porém estou tentando fazer uma comparação. Caso o cpf que a pessoa esteja tentando cadastrar seja igual a um cpf existente no mysql, para o java impedir que isso aconteça. Olhei alguns exemplos na internet referente ao ResultSet. Tentei aplicar mas não consegui. Vou postar o código funcionar. Agradeço quem puder ajudar.

try {
Class.forName(“com.mysql.jdbc.Driver”);

Connection con; 
            
            
            con = (Connection) DriverManager.getConnection("jdbc:mysql://127.0.0.1/bdteste","root","teste1");
            String query = "INSERT INTO cliente (nome,cpf) VALUES (?,?)"; 
            PreparedStatement stmt = con.prepareStatement(query);
            
            stmt.setString(1,jTextField1.getText());
            stmt.setString(2,jTextField2.getText());
            
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null,"Cliente Cadastrado com sucesso"); // caixa de mensagem
            stmt.close();
            con.close();
        }
        
         catch (ClassNotFoundException e) {
            System.out.println("Não foi possível encontrar a classe");
        } catch (SQLException e){
         JOptionPane.showMessageDialog(null, "erro no SQL");
        }

Esse código ta fazendo um cadastro e está funcional. E esse código coloquei dentro do actionPeforme do botão.

6 Respostas

FilipeMapelli

Boa Noite Luciana,
o seu campo cpf está como Unique no banco de dados?
Se estiver como unique vc pode fazer o catch assim:

catch (ConstraintViolationException erro) {
                    JOptionPane.showMessageDialog(this,
                            "CPF já cadastrado no sistema", "Cliente",
                            JOptionPane.WARNING_MESSAGE);
                    jTextField2.setText(""); //limpa o campo cpf  
                    erro.printStackTrace();
                }
L

sim esta como unique. vou testar.Volto para dar o feedback. Obrigada.

L

Ta dando conflito com os catch existentes. ja tentei até botar try mas não da.

Eduardo_Maranata10

Tenho um exemplo pratico :

Na Classe ClienteDao você teria um metodo para inserir, e outro para verificar o cpf, esse metodo retorna um booleano :

// metodo para pesquisar  

    public boolean procurarCpf(String cpf) {
    	String sql = "select * cliente where cpf like ?";
		try {
			PreparedStatement stmt = conexao.getConn().prepareStatement(sql);
			stmt.setString(1, cpf);
			ResultSet rs = stmt.executeQuery();
			return rs.next();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return false;
	}

Agora dentro do método actionPerform você colocaria esse código para a verificação de um cpf no banco:

private void metodoButton() {
    	ClienteDao dao =  new ClienteDao();
    	if (dao.procurarCpf(jTextField2.getText().getText())){
    		System.out.println("Cpf cadastrado no sistema");
    	}else{
    		dao.inserir(jTextField1.getText(),jTextField2.getText());
    	}
	}

Espero ter ajudado

FilipeMapelli

Luciana, me desculpe, passei pra vc uma solução fácil, porém pra usar ConstraintViolationException vc teria que estar usando o Hibernate(o que não é seu caso) para importar de org.hibernate.exception.ConstraintViolationException; . Esta solução do Eduardo se adequa mais ao que vc precisa aprender neste momento, que se resume em vc fazer uma consulta ao banco para ver se existe o cpf digitado na JTextField, ou seja mais um select. Pense nisso!

L

Consegui povo. Obrigada a todos

Criado 14 de maio de 2016
Ultima resposta 17 de mai. de 2016
Respostas 6
Participantes 3